用的lnmp搭建的环境,这里遇见的问题是php文件不能被解析,那就是php-fpm.conf的配置和nginx的配置有问题
首先php-fpm配置
listen = /tmp/php-cgi.sock
这条配置一般是
listen=127.0.0.1:9000
但是lnmp的配置是第一条,所以nginx里面的配置也要改下
location ~ \.php(.*)$ {
root /mnt/hgfs/test/public;
fastcgi_pass unix:/tmp/php-cgi.sock;
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;
}
其中配置项fastcgi_pass 要跟php-fpm.conf的Listen配置项对应起来,如果Listen的配置项是127.0.0.1:9000,那么nginx的配置项也改成127.0.0.1:9000,如果Listen的配置项是/tmp/php-cgi.sock,那么nginx的配置项就要改成unix:/tmp/php-cgi.sock;
此外还有可能
- 在你php-fpm配置文件php-fpm.conf中设置security.limit_extensions 为 .php 或 .php5,或者其他任何与你环境一致的后缀名。 对于开发环境下的一些用户来说, 完全移除所有security.limit_extensions的值或设置为FALSE,能够保证可以正常工作.
- 检查你的SCRIPT_FILENAME, fastcgi_param 并根据你文件的地址来设置它们.
- 在你的nginx配置文件中包含有fastcgi_split_path_info ^(.+.php)(/.+)$; 则所有其他的对应fastcgi参数也都应该在location块中定义
- 在你的php.ini配置文件中,设置cgi.fix_pathinfo=1
参考 http://www.qetee.com/exp/php/phalcon-nginx-403/