全球主机交流论坛

标题: nginx如何开启PHP的PATHINFO??? [打印本页]

作者: wzwen    时间: 2009-11-28 10:43
标题: nginx如何开启PHP的PATHINFO???
是用的置顶上面的一键包:lnmp

从网上找的教程:http://www.laruence.com/2009/11/13/1138.html
  1. location ~ \.php
  2. {
  3.         fastcgi_index index.php;
  4.         fastcgi_pass 127.0.0.1:9000;
  5.         include      fastcgi_params;
  6.         set $path_info "";
  7.         set $real_script_name $fastcgi_script_name;
  8.         if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
  9.         set $real_script_name $1;
  10.         set $path_info $2;
  11. }
  12. fastcgi_param SCRIPT_FILENAME /var/html/$real_script_name;
  13. fastcgi_param SCRIPT_NAME $real_script_name;
  14. fastcgi_param PATH_INFO $path_info;
  15. }
复制代码
启动nginx提示:
[root@wzwen ~]# /usr/local/nginx/sbin/nginx
[emerg]: unknown directive "if($fastcgi_script_name" in /usr/local/nginx/conf/nginx.conf:71



这句有问题吗?
set $real_script_name $fastcgi_script_name;



谁知道怎么解决?

或者有好的方法???
作者: cpuer    时间: 2009-11-28 11:03
标题: 回复 1# 的帖子
不懂哦,这个有什么实际用途么?
作者: wzwen    时间: 2009-11-28 11:10
现在许多的PHP框架的URL(路由)都需要用PATHINFO,

就是使网站更好看更利于搜索引擎收录。

比如www.abc.com/index.php?id=1
可以变成www.abc.com/index/id/1
作者: cpuer    时间: 2009-11-28 11:17
标题: 回复 3# 的帖子
哦,伪静态就行了吧。
作者: wzwen    时间: 2009-11-28 11:20
标题: 回复 4# 的帖子
如果用伪静态,那写正则要写死人。。。
作者: wzwen    时间: 2009-11-28 11:22
对了,那个一键包里的nginx.conf默认配置有点不明白:
fastcgi_pass  unix:/tmp/php-cgi.sock;
#fastcgi_pass  127.0.0.1:9000;

我看别人那时都是直接用fastcgi_pass  127.0.0.1:9000;
这里为何用fastcgi_pass  unix:/tmp/php-cgi.sock;

???
作者: lemss    时间: 2009-11-28 11:26
标题: 回复 6# 的帖子
没什么大区别,使用fastcgi_pass  unix:/tmp/php-cgi.sock;速度快点,稳定性稍差

使用fastcgi_pass  127.0.0.1:9000;速度可能稍微慢点,但稳定性好
作者: cpuer    时间: 2009-11-28 11:28
标题: 回复 7# 的帖子
嗯,我也是听张宴这么说的。

如果每个站自己的php-cgi的话只能选择后者。
作者: wzwen    时间: 2009-11-28 11:29
标题: 回复 7# 的帖子
谢谢,原来这样。

网上那些开启PATHINFO的教程,不知道是和我这个nginx版本不匹配,还是他们的教程有问题。。。

反正,没一个成功的。。。

继续试验……
作者: greensnow    时间: 2009-11-28 12:08
unix socket因为不需要加checksum,header和路由等等tcpip的机制,
所以理论上会比普通的端口方式快(实际没看到过谁测试过)
还unix socket因为是文件,可以根据用户做权限控制,所以安全性比较好
缺点大概是文件的话,所以只能在本地读写,然后稳定性差一点的说法没有听说过。
客户端和服务端在同一台服务器上的情况下就应该用unix socket
作者: 啊猪同学    时间: 2009-11-28 12:14
PATHINFO 我也想知道怎么开启,呵呵,
作者: wzwen    时间: 2009-11-28 15:02
原帖由 lemss 于 2009-11-28 11:26 发表
没什么大区别,使用fastcgi_pass  unix:/tmp/php-cgi.sock;速度快点,稳定性稍差

使用fastcgi_pass  127.0.0.1:9000;速度可能稍微慢点,但稳定性好


奇怪,我改成用fastcgi_pass  127.0.0.1:9000;

网站出现502错误,现在必须用unix:/tmp/php-cgi.sock;
作者: wzwen    时间: 2009-11-28 15:05
还有件奇怪的事情.

我修改nginx.conf配置后,更新一下,结果又出错:
[root@wzwen ~]# kill -HUP 'cat /usr/local/nginx/logs/nginx.pid'
-bash: kill: cat /usr/local/nginx/logs/nginx.pid: arguments must be process or job IDs

只能停止再重启nginx...
作者: cpuer    时间: 2009-11-28 15:11
标题: 回复 12# 的帖子
调节php-fpm.
作者: wzwen    时间: 2009-11-28 15:38
开启PATHINFO成功。。。

教程是外国人写的,在此:http://open.emspace.com.au/nginx ... info-and-scriptname

我将一键包的原配置中的这段
                location ~ .*\.(php|php5)?$
                        {
                                fastcgi_pass  unix:/tmp/php-cgi.sock;
                                #fastcgi_pass  127.0.0.1:9000;
                                fastcgi_index index.php;
                                include fcgi.conf;
                        }


替换成:
    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php/$1 last;
        }
    }

    location ~ .php$ {
        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        include      fastcgi_params;
    }

    location ~ \.php($|/) {

        set $script     $uri;
        set $path_info  "";

        if ($uri ~ "^(.+\.php)(/.+)") {
            set $script     $1;
            set $path_info  $2;
        }

        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME    $document_root$script;
        fastcgi_param  SCRIPT_NAME        $script;
        fastcgi_param  PATH_INFO          $path_info;

        fastcgi_param  QUERY_STRING       $query_string;
        fastcgi_param  REQUEST_METHOD     $request_method;
        fastcgi_param  CONTENT_TYPE       $content_type;
        fastcgi_param  CONTENT_LENGTH     $content_length;

        fastcgi_param  REQUEST_URI        $request_uri;
        fastcgi_param  DOCUMENT_URI       $document_uri;
        fastcgi_param  DOCUMENT_ROOT      $document_root;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;

        fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
        fastcgi_param  SERVER_SOFTWARE    nginx;

        fastcgi_param  REMOTE_ADDR        $remote_addr;
        fastcgi_param  REMOTE_PORT        $remote_port;
        fastcgi_param  SERVER_ADDR        $server_addr;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        $server_name;
        fastcgi_param  REDIRECT_STATUS    200;

    }

作者: wzwen    时间: 2009-11-28 15:40
替换的内容太多了,呵呵。。。

不过成功了。

案例如下: 
http://www.mrbank.net/index.php

http://www.mrbank.net/Page/Contact
作者: cpuer    时间: 2009-11-28 16:44
标题: 回复 15# 的帖子
学习了。
作者: RyoKazami    时间: 2009-11-28 17:25
学习了。
作者: zyypp    时间: 2009-11-28 19:00
我记得以前问过nginx 如何 配置SERVER_ADMIN 使探针显示管理员邮箱
后来貌似提过修改fcgi.conf可以调用一些 php的 配置呵呵
作者: wzwen    时间: 2009-11-28 19:27
标题: 回复 19# 的帖子
修改fcgi.conf这个方法等有时间再折腾测试了

这次找到的方法替换内容太多了,感觉不是很爽,虽然功能实现了。
作者: zyypp    时间: 2009-11-28 19:32
标题: 回复 20# 的帖子
你所替换的内容 按张宴的教程 那么 就是 include fcgi.conf;  这里面的
作者: wzwen    时间: 2009-11-28 19:38
标题: 回复 21# 的帖子
嗯,我打开fcgi.conf文件,果然是的。。。
作者: cpuer    时间: 2009-11-28 19:43
标题: 回复 21# 的帖子
你咋这么聪明
作者: zyypp    时间: 2009-11-28 19:44
标题: 回复 22# 的帖子
....很好奇 你当初 装的时候 没用弄这个文件吗?!
作者: zyypp    时间: 2009-11-28 19:45
原帖由 cpuer 于 2009-11-28 19:43 发表
你咋这么聪明


你是在夸我吗?!
作者: cpuer    时间: 2009-11-28 19:45
标题: 回复 25# 的帖子
我没转过弯来
作者: zyypp    时间: 2009-11-28 19:46
原帖由 cpuer 于 2009-11-28 19:45 发表
我没转过弯来


我在补充下一句 我要聪明 怎么还没找到MM 呢 ~~~~(>_<)~~~~
作者: wzwen    时间: 2009-11-28 19:48
标题: 回复 24# 的帖子
网上的教程害死人,上面没提到修改fcgi.conf文件

都是说直接在nginx.conf里修改。。。

误导。。。

我装的是一键包,置顶的那个。

我是菜鸟啊,刚接触linux一星期,nginx也是这两天才碰到。。。

[ 本帖最后由 wzwen 于 2009-11-28 19:49 编辑 ]
作者: cpuer    时间: 2009-11-28 19:50
标题: 回复 27# 的帖子
聪明也是多方面的哈。
作者: zyypp    时间: 2009-11-28 19:52
标题: 回复 28# 的帖子
额 原来如此啊 呵呵
作者: zyypp    时间: 2009-11-28 19:52
原帖由 cpuer 于 2009-11-28 19:50 发表
聪明也是多方面的哈。


~~~~(>_<)~~~~





欢迎光临 全球主机交流论坛 (https://hostloc.9hanju.com/) Powered by Discuz! X3.4