Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1621267
  • 博文数量: 1481
  • 博客积分: 26784
  • 博客等级: 上将
  • 技术积分: 17045
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-12 09:22
文章分类

全部博文(1481)

文章存档

2014年(10)

2013年(353)

2012年(700)

2011年(418)

分类: PHP

2013-04-11 09:26:23

这几天忙着组织开源项目,自己给整了一个云主机。在学校的时候就接触到Nginx了,但从未实践过,这次借此机会部署了LNMP环境,在安装过程中遇到过很多问题,不过后来都一一解决了。
  【实践才是硬道理】



问题一、解决Nginx不支持PATHINFO

  1. server
  2.         {
  3.                 listen       80 default_server;
  4.                 server_name localhost;
  5.                 index index.html index.htm index.php;
  6.                 root  /web/www;
  7.                 location ~ .*\.(php|php5)
  8.                         {
  9.                                 set $path_info '';
  10.                                 set $real_script_name $fastcgi_script_name;
  11.                                 try_files $uri =404;
  12.                                 fastcgi_pass  unix:/tmp/php-cgi.sock;
  13.                                 fastcgi_index index.php;
  14.                                 #**********  set pathinfo *************
  15.                                 if ($real_script_name ~ "^(.+?\.php)(/.+)$") {
  16.                                         set $real_script_name $1;
  17.                                         set $path_info $2;
  18.                                  }
  19.                                 fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
  20.                                 fastcgi_param SCRIPT_NAME $real_script_name;
  21.                                 fastcgi_param PATH_INFO $path_info;
  22.                                 include fcgi.conf;
  23.                         }
  24.                 location /status
  25.                         {
  26.                                 stub_status on;
  27.                                 access_log   off;
  28.                         }
  29.                 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  30.                         {
  31.                                 expires      30d;
  32.                         }
  33.                 location ~ .*\.(js|css)?$
  34.                         {
  35.                                 expires      12h;
  36.                         }
  37.                 access_log off;
  38.         }


  在include fcgi.conf时,要把fcgi.conf中的fastcgi_param SCRIPT_NAME以及fastcgi_param SCRIPT_FILENAME注释掉,不然SCRIPT_NAME与SCRIPT_FILENAME不会起作用的,PATHINFO是解决了,其它地方又会出问题。
  还有一个地方要注意,Nginx在配置PATHINFO后,$_SERVER['PHP_SELF'] 仍然有问题,在ThinkPHP中会影响到PUBLIC常量,因此需要做下调整,在入口文件里加上
  1. define('_PHP_FILE_',$_SERVER['SCRIPT_NAME']);
原文地址:
阅读(450) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~