PHP上传带有单引号文件名的文件导致文件名被截断的bug [疑难杂症]
post by 朦朧中的罪惡 / 2010-6-7 10:00 Monday
新发现一个PHP的文件上传bug,bug描述如下:
触发条件:
PHP版本 < 5.3
PHP魔法引用开启
如果你上传一个叫做lalalala'gagaga.txt的文件,那么在服务器端接收到的时候,文件名就会从引号处被截断,名字变成gagaga.txt
$_FILES数组测试参数如下图:
bug分析:
导致这个问题的原因是由于魔法引用功能转义单引号触发,
如果默认路径是c:\tmp\lalalala'gagaga.txt
那么经过魔法引用后就变成了c:\\tmp\\lalalala\'gagaga.txt
如果你使用basename函数打印这个字符串,就会得到'gagaga.txt
解决方案:
1.关闭你PHP的魔法引用功能
2.升级你的PHP到5.3版本,在5.3中这个问题已经修复
3.如果上面两个方案你都无法办到,那么下面是兼容方案
在你上传的表单里面增加一个隐藏域用于存储文件名称,选择文件后使用JavaScript取得文件名并将其存储在隐藏域中
例如:
<form name="imgform" method="post" action="upload.php" enctype="multipart/form-data">
<input type="hidden" name="userfilename" id="userfilename">
<input type="file" name="userfile" id="userfile" size="64" maxlength="256" onChange="javascript:top.document.imgform.userfilename.value= top.imgform.userfile.value">
</form>
然后在服务器端做相关处理
这个问题在05年就有人发现了,不知道为啥PHP开发组一直没有修复这个bug
使用Google SSL搜索的解决方案 [疑难杂症]
post by 朦朧中的罪惡 / 2010-6-2 22:09 Wednesday
Google前不久推出了SSL搜索,有了SSL咱就不怕某WALL了(现在用普通搜索撞上的几率非常高了)
但是切换到SSL搜索的步骤很麻烦:步骤如下
先访问:http://g.cn
现在找了一些比较好的快捷解决方案
1.使用短网址http://ggssl.com 直接访问Google SSL搜索主页,不需要繁琐的跳转操作,在此感谢大牛张宴 为咱们提供这个网址
2.安装Firefox Google SSL 搜索插件,在搜索框就能使用Google的SSL搜索
最后,当然是 FUCK GREATE FIRE WALL
标签: 疑难杂症
ubuntu10.04下eclipse运行速度慢问题解决 [疑难杂症]
post by 朦朧中的罪惡 / 2010-5-13 20:17 Thursday
在ubuntu下运行eclipse速度十分缓慢,感觉像是在用一台老爷机写程序,研究了一下Java环境才发现我装的是open jdk而不是sun jdk.
在ubuntu的官方找到了以下说明,链接
Sun Java moved to the Partner repository
For Ubuntu 10.04 LTS, the sun-java6 packages have been dropped from the Multiverse section of the Ubuntu archive. It is recommended that you use openjdk-6 instead.
If you can not switch from the proprietary Sun JDK/JRE to OpenJDK, you can install sun-java6 packages from the Canonical Partner Repository. You can configure your system to use this repository via command-line:
add-apt-repository "deb http://archive.canonical.com/ lucid partner"
晕倒,只好手动安装sun的jdk了
在命令行输入
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
搞定
ubuntu下PHP5.3安装xdebug后var_dump输出没有格式化的问题 [疑难杂症]
post by 朦朧中的罪惡 / 2010-5-6 10:49 Thursday
在ubuntu10.04下面配置Apache2.2 + PHP5.3的开发环境,顺便装了一个xdebug扩展方便调试代码。
但是环境配置好了之后却发现xdebug加载成功了但是var_dump输出的内容却没有使用html格式化
xdebug正常的var_dump输出应该是下面的样子
但是我当前的情况却是没有格式化的代码
这时想到估计是php.ini里面的某个输出的配置有问题,打印phpinfo()逐个查看配置,最后发现php配置项目
html_errors 为 Off
将html_errors的值修改为On后,重启Apache,问题解决
ubuntu安装MySQL-Python出现mysql_config not found报错解决 [疑难杂症]
post by 朦朧中的罪惡 / 2010-4-22 18:49 Thursday
配置MySQL-Python的时候系统报错,提示:
EnvironmentError: mysql_config not found
Google后得知mysql_config是属于MySQL开发用的文件,而使用apt-get安装的MySQL是没有这个文件的,于是在包安装器里面寻找
libmysqld-dev
libmysqlclient-dev
这两个包安装后问题即可解决
ubuntu 9.10 firefox flash中文乱码解决 [疑难杂症]
post by 朦朧中的罪惡 / 2010-3-27 16:47 Saturday
Firefox安装flash播放器后默认的情况下flash播放器无法显示中文字体,表现情况为字体都变成了框框
解决方案:
sudo gedit /etc/fonts/conf.d/49-sansserif.conf
将
<edit name="family" mode="append_last">
<string>sans-serif</string>
</edit>
修改为
<edit name="family" mode="append_last">
<string>sans</string>
</edit>
保存后刷新页面,flash中文就显示正常了
标签: ubuntu
ubuntu在更新的时候报动态 MMap 没有空间了的问题解决 [疑难杂症]
post by 朦朧中的罪惡 / 2010-3-19 15:59 Friday
今天在apt-get update更新ubuntu源的时候报错了
E: 动态 MMap 没有空间了。请增大 APT::Cache-Limit 的大侠。当前值:12500000。(man 5 apt.conf)
E: 处理 zapping (NewVersion1)时出错
E: Problem with MergeList /var/lib/apt/lists/tw.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-i386_Packages
W: Unable to munmap
E: 无法解析或打开软件包列表文件或状态文件。
E: 动态 MMap 没有空间了。请增大 APT::Cache-Limit 的大侠。当前值:12500000。(man 5 apt.conf)
E: 处理 zapping (NewVersion1)时出错
E: Problem with MergeList /var/lib/apt/lists/tw.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-i386_Packages
W: Unable to munmap
解决方案:
编辑 sudo gedit /etc/apt/apt.conf
在里面增加或者修改以下参数,把后面的数字尽量的调大即可,如果调大后重复出现该问题,继续增加数字即可
APT::Cache-Limit 16777216;
PHP使用Session和全局变量开启时候出现waring提示的分析 [疑难杂症]
post by 朦朧中的罪惡 / 2010-2-23 19:38 Tuesday
这个问题估计很少人会遇到,但是总有人会那么凑巧的给碰上
PHP在运行时出现一个Waring,内容为
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0.
如何触发这个Waring呢?首先php配置register_globals必须为Off
代码如下
<?php
session_start();
$test = 'be-evil' ;
$_SESSION['test'] = null;
在register_globals为On的情况下,$test可能是由其他全局变量转换来的例如$_GET,$_POST;
但是在register_globals为Off的情况下,这里是创建了一个全局变量 test 切值为 null,解释器会认为你忘记全局变量关闭了,然后想修改全局变量$test的值...然后就会冒出这个善意的提醒了
解决办法:
在PHP.ini中设定bug_compat_42或bug_compat_warn为Off即可
或者避免全局变量与Session变量名称同名
相关资料:
标签: php
Google App Engine Launcher无法启动问题解决 [疑难杂症]
post by 朦朧中的罪惡 / 2010-1-10 20:23 Sunday
今天在电脑装好了Google App Engine,在启动Google App Engine Launcher的时候它提示以下内容
Error occurred
See the logfile GoolgleAppEngineLauncher.exe.log for details
打开错误日志文件GoolgleAppEngineLauncher.exe.log
发现其内容为
Traceback (most recent call last):
File "GoogleAppEngineLauncher.py", line 42, in <module>
File "wx\_core.pyc", line 7913, in __init__
File "wx\_core.pyc", line 7487, in _BootstrapApp
File "launcher\app.pyc", line 53, in OnInit
File "launcher\app.pyc", line 97, in _CreateModels
File "launcher\maintable.pyc", line 35, in __init__
File "launcher\maintable.pyc", line 86, in _LoadProjects
File "launcher\project.pyc", line 63, in ProjectWithConfigParser
File "launcher\project.pyc", line 260, in _LoadFromConfigParser
File "ConfigParser.pyc", line 520, in get
ConfigParser.NoOptionError: No option 'name' in section: '0'
原来是配置文件内容出了问题,然后在C:\Documents and Settings\中搜索到google_appengine_projects.ini
打开该文件,内容为
[1]
path = D:\PYTHON\engineapp
name = engineapp
port = 8080
[0]
按照记录提示所说问题是 No option 'name' in section: '0'
删除[0]保存,再次启动Google App Engine Lancher 问题解决
关闭虚拟主机的Gzip [疑难杂症]
post by 朦朧中的罪惡 / 2009-10-14 13:41 Wednesday
有的Apache虚拟主机默认就开启的Gzip节省网站流量,但是这么做可能导致网站在使用ie6浏览时出现一些神奇的问题,如JavaScript不运行,框架页面空白等神奇的情况。
如果你的虚拟主机支持.htaccess,那么可以在其中写入SetEnv no-gzip即可关闭Apache的Gzip压缩。








