所以我是 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
。
这是我的 nginx 配置文件中用于启用 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 并从源代码构建它:
--configure --prefix=/usr/local/nginx-1.7.3 make sudo make install
所以现在我有两个 nginx 安装。第一个使用apt-get install nginx
,这个是从源代码构建的。我可以分别运行sudo service nginx start
这两个 nginx apt-get install version
,sudo /usr/local/nginx-1.7.3/sbin/nginx
运行从源代码构建的版本。
为了在“从源代码构建”版本上启用 fastCGI 代理,我认为它与 nginx 的第一次安装相同,因此 nginx.conf 文件的快速 cgi 代理位置块与第一个相同。
但
从源代码构建的版本似乎无法通信,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"
由于我缺乏知识,我怀疑自己做了一些非常愚蠢的事情,但我似乎无法弄清楚。为什么“从源代码构建”版本在尝试连接到以 .php 结尾的文件时会出现该错误?
答案1
正如 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
答案2
问题解决了:
我/etc/nginx/nginx.conf
的下载的 nginx 配置为 ,sudo apt-get install nginx
用户设置为 ,因此user www-data;
它能够与 进行通信,php5-fpm
而从位于 的源构建的 nginx-1.7.3/usr/local/nginx-1.7.3/conf/nginx.conf
则将用户设置为user nobody;
。
通过更改user nobody;
为user www-data;
它开始与 php-fpm 通信。