thinkphp在ubuntu下验证码无法加载或者验证码错误问题的解决

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kunpeng1987/article/details/72876347

最近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

猜你喜欢

转载自blog.csdn.net/kunpeng1987/article/details/72876347
今日推荐