1、WRITE_ERROR,是文件目录权限问题,解决方法:chmod 777 -R XXX
2、访问界面首页正常,但是其他界面都是404,是因为Nginx没开启Pathinfo:解决如下:
pathinfo设置
LNMP上各个版本pathinfo各个版本的设置基本一样:
lnmp v1.1上,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/vhost/域名.conf)
去掉#include pathinfo.conf前面的#,把try_files $uri =404; 前面加上# 注释掉。
1.2,1.3上,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/vhost/域名.conf)
将include enable-php.conf;替换为include enable-php-pathinfo.conf;
修改pathinfo需要重启nginx生效。
3、本地测试可以上传到LNMP点击超链接显示403,发现U函数路径错误,即www.xxx.com/.php?s=/,index.php的index不见了
导致pathinfo不能用的原因是cgi.fix_pathinfo=0的时候$_SERVER['PHP_SELF']是获取不到index.php的。
而Thinkphp的源码
if(IS_CGI) {
//CGI/FASTCGI模式下
$_temp = explode('.php',$_SERVER['PHP_SELF']);
define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
}else {
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/'));
}
由于$_SERVER['PHP_SELF']获取不到index.php所以$_temp是空,导致PHP_FILE为.php,U函数生成的地址也是.php这样无法访问的地址。如果你不想修改PHP的配置就只能修改这里的源码。把上面的if里面修改成和else下面一样的就可以了。
最终修改源码为:
// 当前文件名
if(!defined('_PHP_FILE_')) {
if(IS_CGI) {
//CGI/FASTCGI模式下
//$_temp = explode('.php',$_SERVER['PHP_SELF']);
//define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/'));
}else {
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/'));
}
}
参考:http://tw198611.iteye.com/blog/2267664
网友评论