美文网首页
关于TP3.2WAMP正常,上传到LNMP上巨坑:

关于TP3.2WAMP正常,上传到LNMP上巨坑:

作者: hello大象 | 来源:发表于2018-04-26 13:57 被阅读0次

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

如有帮助,欢迎点赞~~

相关文章

网友评论

      本文标题:关于TP3.2WAMP正常,上传到LNMP上巨坑:

      本文链接:https://www.haomeiwen.com/subject/pjgplftx.html