最近LZ在做一个thinkphp的项目,用的是WAMP开发的。把代码移植到ubuntu下,就出问题了,验证码无法显示。之前也碰到过这样的问题,无非是GD库没有加载,或者是session写入权限问题。
先说下这两个问题的解决办法:
1.GD库没有加载
安装gd库
apt-get install php5-gd
搜到gd.so在/usr/lib/php5/20090626+lfs/目录下 ,需要修改php.ini,php.ini在/etc/php5/apach2目录下。
于是修改php.ini:
extension_dir="/usr/lib/php5/20060613+lfs/"
再添加一行
extension=gd.so
重启 apach2:
/etc/init.d/apach2 restart
2.session写入权限问题
<?php
$sessionpath = session_save_path();
//获取当前session的保存路径
echo $sessionpath;
?>
修改权限为777.
补充:还有人说是bom问题,再此我也说下,可能好多童鞋可能不知道BOM 是什么,在此我也说明下。
BOM:
为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE(U+FEFF)字符开头。这作为一个“特征符”或“字节顺序标记(byte-order mark,BOM)”来识别文件中使用的编码和字节顺序。
Linux/UNIX 并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。 (– 这就是导致这次页面出现空白行的原因)
dom不是好东西就是一个数据签名,一串字符串而已,经常导致页面出现空白行,特别是PHP进行文件引入require_once和include的时候。
3.Linux下查找包含BOM头的文件和清除BOM头命令
查找包含BOM头的文件,命令如下:
grep -r -I -l $'^\xEF\xBB\xBF' ./
\xef\xbb\xbf是UTF8 BOM的16进制表示
这个命令会把当前目录及所有子目录下的BOM头删除掉。
find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \;
另一种方法:
echo -ne '\xef\xbb\xbf123456' | awk '{if(NR==1)sub(/^\xef\xbb\xbf/,""); print}'
BOM的详细解释: