ThinkPHP Nginx pathinfo rewrite 配置

来源:互联网 发布:ubuntu dpkg安装deb包 编辑:程序博客网 时间:2024/03/29 15:46

做项目用到ThinkPHP框架,在Linux+Apache下面是正常的,但是在Linux+Nginx上面运行不出来,网上找了各种办法,才发现是nginx pathinfo默认没有开启和ThinkPHP rewrite的问题,下面是具体的配置,有需要的朋友可以参考下。
服务器环境:LNMP 1.2,php 5.3,mysql 5.6.23,nginx 1.8.0;

我是在/usr/local/nginx/conf/vhost下面新建的虚拟主机,test.abc.com.conf,这个需要在/usr/local/nginx/conf/nginx.conf里面引入,不懂得可以百度下。

下面是配置文件test.abc.com.conf的内容:

server {        listen       80;        server_name  test.abc.com;        root /home/www/abc; # thinkphp的路径        location / {            index  index.php index.html index.htm;             #如果请求既不是一个文件,也不是一个目录,则执行以下重写规则             if (!-e $request_filename)             {                #地址作为将参数rewrite到index.php上。                rewrite ^/(.*)$ /index.php/$1;             }        }        #proxy the php scripts to php-fpm        location ~ \.php {            include fastcgi.conf;                    ##pathinfo支持start                    #定义变量 $path_info ,用于存放pathinfo信息                    set $path_info "";                    #定义变量 $real_script_name,用于存放真实地址                    set $real_script_name $fastcgi_script_name;                    #如果地址与引号内的正则表达式匹配                    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {                            #将文件地址赋值给变量 $real_script_name                            set $real_script_name $1;                            #将文件地址后的参数赋值给变量 $path_info                            set $path_info $2;                    }                    #配置fastcgi的一些参数                    fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;                    fastcgi_param SCRIPT_NAME $real_script_name;                    fastcgi_param PATH_INFO $path_info;                    ###pathinfo支持end            fastcgi_intercept_errors on;            ##LNMP pass值这个   原生的是 127.0.0.1:9000            fastcgi_pass   unix:/tmp/php-cgi.sock;        }    }

将URL_MODEL的值设置成’2’;
然后重启nginx和php-fpm;
然后就发现页面是出来了,功能没用。。。。

最后在网上找到是因为:当php.ini 的 cgi.fix_pathinfo=0时 PHP_FILE获取的值是.php,导致U函数生成URL不正确;
然后说改为1就好,但是会有安全隐患,我对这个了解不深,希望网友能找到更合适的解决方法,目前 我是在php.ini 把 cgi.fix_pathinfo=0给注释掉了。。。

希望对大家有所帮助,也欢迎大家拍砖吐槽。

0 0
原创粉丝点击