美文网首页PHP经验分享
ThinkPHP5 Nginx配置,权限等问题记录与解决

ThinkPHP5 Nginx配置,权限等问题记录与解决

作者: stiller | 来源:发表于2016-12-12 14:33 被阅读659次

使用TP5开发了一个基本的API的提供网站,用做一个DEMO的测试,这是上传至服务器的一些小坑的记录。

  1. 首先是权限问题,对于Runtime文件夹无法读写,TP保存无权限,好解决,因为是测试环境直接:chmod -R 777,解决。

  2. 第二个问题是因为API的方便性和安全性,写代码的时候开启了强制模式,在Route中定义的路由:

'url_route_on' => true,
'url_route_must' => true,

导致线上的Nginx只能进入主页,所有的JQuery请求和超链都已经失效。但是对于domain/index.php/module/controller/action这样的访问方式是可行的。本地开发环境是Apache,并没有这个问题,所以在本地切换成了Nginx,修改合适的rewrite和php-PathInfo,具体配置代码如下:

server {
    listen 81;
    server_name wxapi.com;
    set        $root     'E:/PHP/WX_demoAPI/public';
    root $root;
    index index.php index.html index.htm;  
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root html;
    }
    location ~ \.php(.*)$  {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;
    }
    location /{  
        if ( !-e $request_filename) {  
            rewrite ^(.*)$ /index.php/$1 last;  
            break;  
        }  
    }
    location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$  
    {  
        root $root;  
    }
}

这样配置,本地就没有问题了。

  1. 但是上线改配置的时候,问题又出现了,线上使用的是lnmp一键安装包,PHP进程sock进行访问时权限问题,也不敢在给用户提权,于是直接修改nginx的pathinfo支持就可以了。通过更改conf/enable-php.conf进行对于PHP-PathInfo的支持。
    原来的配置如下图:
    Paste_Image.png
    对于一键安装包已经提供了pathinfo的配置,更改后的代码(错误方式,备注已改正):
Paste_Image.png

这里出现了一个错误,是在之后发现的,其实不应当更改enable-php而是在vhost引入enable-php-pathinfo即可以完成。即,修改对应虚拟主机的配置文件将include enable-php.conf;替换为include enable-php-pathinfo.conf;

lnmp restart 完美解决。

相关文章

网友评论

    本文标题:ThinkPHP5 Nginx配置,权限等问题记录与解决

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