首页 > 代码库 > thinkphp在ubuntu下验证码无法加载或者验证码错误问题的解决
thinkphp在ubuntu下验证码无法加载或者验证码错误问题的解决
最近LZ在做一个thinkphp的项目,用的是WAMP开发的。把代码移植到ubuntu下,就出问题了,验证码无法显示。之前也碰到过这样的问题,无非是GD库没有加载,或者是session写入权限问题。
先说下这两个问题的解决办法:
① 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
② 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的时候。
③ 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的详细解释
http://www.cnblogs.com/chengmo/archive/2010/10/30/1864004.html
本文转载自http://blog.csdn.net/kunpeng1987/article/details/72876347
thinkphp在ubuntu下验证码无法加载或者验证码错误问题的解决