首先:我不是configuration事物的专家。 这对我来说是非常新的,所以,我提前道歉。
在工作中,我们有一个Centos服务器。 安装nginx之前在这里工作的人。 我们需要做一个PHP网站,所以,显然,我需要设置PHP,并使其与Nginx的工作。
做一个很长的故事,我不得不用一个新的nginx二进制代码(因为旧的编译没有fast-cgi),我不得不重新编译和安装php(因为新版本有fpm)。 然后我努力configuration文件,使这个nginx.conf(不是所有的文件)
user php; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; }
并在php-fpm中取消注释一些参数(这里要详细说明,但重要的是该组和用户是“php”)
我永远无法按照本书的说明启动php-fpm
sudo /usr/sbin/php-fpm start
但看了网后,我发现了这个
sudo /usr/local/sbin/php-fpm --fpm-config=/usr/local/etc/php-fpm.conf
这工作(我认为)
我重新启动了nginx。 但是… nothings与PHP发生…我的PHP文件(通过Firefox)调用甚至不出现在日志(/opt/nginx/logs/error.log)
我真的,真的精疲力尽,失去了…任何人都可以帮我,pleaaase …. 🙁
提前致谢
首先检查php-fpm是否正在监听9000端口:netstat -an | grep LISTEN | grep 9000,如果它返回类似于:tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN然后php-fpm的作品,你应该检查你的nginxconfiguration。 即检查你是否定义了正确的server_name。 它应该和你在浏览器中input的一样。 如果你使用一些其他的URL比本地主机确保你有正确的DNSlogging这个url。 我的configuration为php-fpm是:
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/somesite/htdocs$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT /var/www/somesite/htdocs; include /etc/nginx/fastcgi_params; }
这个configuration适用于我的许多网站。
我相信php-fpm和fastcgi是整合nginx和PHP的两种独立方式。 我认为你需要使用一种方法或其他。 CentOS的这个指南应该可以让你用fastcgi进入大球场。 http://library.linode.com/web-servers/nginx/php-fastcgi/centos-5
我成功地从他们的库中类似的文章来设置Ubuntu上的Nginx / fastcgi / PHP。
location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass localhost:9000; }
这在nginx 0.8.54上适用于我。 “fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;” 可能是你需要改变的唯一的东西。 它使用服务器configuration中的“root /var/www/example.com/yoursite”指令。 过去我曾经在我身上发现过错误,只是提供了一个白页。 您通常可以在/var/log/nginx/error.log中看到错误。 另外,您是否设置了php-fpm在TCP端口或套接字上运行? 检查您的php-fpm.conf,我认为它默认为TCP端口9000. 这个nginx.org页面为各种开源Web应用(wordpress,drupal等)提供了大量的默认configuration。