所以对于nginx来说是新的。 在Ubuntu上,我使用“sudo apt-get install nginx”安装了nginx,然后安装了php5-fpm sudo apt get install php5-fpm 。 我遵循以下步骤: https : //www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-12-04,并得到了nginx工作罚款与php5-fpm 。
这是从我的nginxconfiguration文件启用fastCGI代理的相关部分。
location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
这工作完美,PHP文件运行如何,他们假设。
然后我下载了nginx-1.7.3.tar.gz,如果从源代码build立:
--configure --prefix=/usr/local/nginx-1.7.3 make sudo make install
所以现在我会有两个安装nginx。 第一个使用apt-get install nginx ,这个是从源码build立的。 我可以以不同的方式运行每一个sudo service nginx start运行apt-get install version , sudo /usr/local/nginx-1.7.3/sbin/nginx运行从源代码构build的版本。
要启用“从源代码构build”的fastCGI代理,我认为它与第一次安装nginx相同,因此nginx.conf文件的快速cgi代理位置块与第一个相同。
但
从源代码构build的版本似乎没有与php5-fpm通信,所以我得到的错误:
对不起,您正在寻找的页面目前无法使用。 请稍后再试。
和nginx的错误日志说: 2014/08/03 01:31:24 [crit] 8566#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost"
由于我缺乏知识,我怀疑我正在做一些非常愚蠢的事情,但我似乎无法弄清楚。 为什么“从源代码构build”版本在尝试连接到以.php结尾的文件时会出现该错误?
正如zhenech所指出的,你很有可能在你的套接字文件(/var/run/php5-fpm.sock)上拥有所有者/权限的问题。
在您的fpm-config(例如/etc/php5/fpm/pool.d/www.conf)中,请尝试以下操作:
listen.owner = www-data listen.group = www-data listen.mode = 0660
问题解决了:
我的/etc/nginx/nginx.conf是nginx下载sudo apt-get install nginx的configuration,nginx的用户设置为user www-data; 所以它能够与php5-fpm进行通信,而从位于/usr/local/nginx-1.7.3/conf/nginx.conf源代码创build的nginx-1.7.3将用户设置为user nobody; 。
通过改变user nobody; 到user www-data; 它开始与php-fpm进行通信。