首页 > 代码库 > 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下验证码无法加载或者验证码错误问题的解决