在lnmp中配置CodeIgiter
本帖最后由 zhengmz 于 2013-12-24 17:49 编辑使用http://lnmp.org/提供的“LNMP一键安装包”后,如果直接使用CodeIgiter,会出现500的错误。
之前在本站搜索到的一些nginx.conf配置,都有些不足:
比如:1. 出现phpmyadmin无法正常访问;
2. 多项目目录下的支持不好。
为此,我找了一通,最终在李开涌的《PHP MVC开发实战》中找到一种配置方法,还是很好用的,分享给大家:
第一步,查看php.ini是否已经开启cgi.fix_pathinfo支持,代码如下:
cgi.fix_pathinfo=1
第二步,配置nginx.conf,直接将原配置中关于php部分的配置修改如下:
location ~ .+\.php
{
try_files $uri =404;
fastcgi_passunix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
set $script $uri;
set $path_info "/";
set $real_script_name $fastcgi_script_name;
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$script;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param SCRIPT_NAME $script;
}
(注:“location ~ .+\.php”只有一个反斜杠)
第三步,为支持index.php文件隐藏,在nginx中配置如下:
location /phpmyadmin/ {
index index.php;
}
location /projectA/ {
index index.php;
if (!-e $request_filename) {
rewrite ^/mifi/(.*)$ /mifi/index.php/$1 last;
break;
}
}
location / {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
其中,配置“location /projectA/”就是为了实现多项目环境。
重启php-fpm和nginx就可以了。
欢迎大家批评指正。
cgi.fix_pathinfo 为1 是不是出现过安全漏洞? 本帖最后由 zhengmz 于 2013-12-25 17:33 编辑
Bobby 发表于 2013-12-25 09:59 static/image/common/back.gif
cgi.fix_pathinfo 为1 是不是出现过安全漏洞?
还真是,谢谢提醒,网络上介绍了很多这方面的问题,nginx的配置确实不如Apache好用。不知大侠有没有好的建议?
没用过lnmp,不知道为什么500,但开发环境、生产环境用的倒没什么问题,设置下PATH_INFO 应该就可以了吧, 这边的配置文件参考http://pengbotao.cn/codeigniter-initialization-debug.html Bobby 发表于 2013-12-25 19:54 static/image/common/back.gif
没用过lnmp,不知道为什么500,但开发环境、生产环境用的倒没什么问题,设置下PATH_INFO 应该就可以了吧,...
感谢帮忙。我最终修改如下:
location ~ ^(.+\.php)(.*)$ {
fastcgi_indexindex.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
同时,关掉了在php.ini中的参数:cgi.fix_pathinfo=0
参考了http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=7815。
页:
[1]