Nginx + PHP-FPM,php 脚本无法运行

Nginx + PHP-FPM,php 脚本无法运行

我在 Linode 上安装了 LEMP,使用他们提供的堆栈脚本之一。我实际上并没有在启动时运行它,而是手动输入命令,因为它似乎没有正确安装所有内容。

无论如何,在安装完所有东西并启动服务器和 php-fpm 且没有错误后,我phpinfo();在默认 nginx 位置 ( /var/www/index.php) 上创建了一个页面。问题是它没有执行脚本,而是显示为静态文件。有人知道我该如何解决这个问题吗?

答案1

让我向您发布我的“nginx-php-fpm-php-apc-postgres”教程的一些相关摘录,希望对您有所帮助。

首先安装所需的软件包:

apt-get install nginx php5-fpm php5-pgsql php5-gd php5-curl php-apc postgresql imagemagick

我假设您已经安装了相关的软件包,例如 php5-fpm。

现在配置“vhost”:

vim /etc/nginx/sites-available/www.domain.tld

下面将显示我的示例配置:

server {
listen 80;
server_name domain.tld www.domain.tld;

access_log /var/log/nginx/domain.access_log;
error_log /var/log/nginx/domain.error_log;

root /var/www/www.domain.tld;
index index.php index.htm index.html;

location ~ .php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME /var/www/www.domain.tld$fastcgi_script_name;
include fastcgi_params;
try_files $uri =404;
}
}

确保随后运行正确的进程:

/etc/init.d/php5-fpm restart
/etc/init.d/nginx start

完整教程请见此处: http://www.xenuser.org/2011/08/28/running-phpbb3-on-a-high-performance-monster-or-how-nginx-php-fpm-php-apc-postgres-will-serve-you-well/

我猜您的 vhost 配置文件缺少我上面发布的一些部分或者 php5-fpm 没有运行。

答案2

嗯,在 nginx 中使用 PHP 相当简单,您只需要对 PHP 使用 FastCGI。

  1. 我正在使用以下代码启动 PHP 的 FastCGI 运行时:spawn-fcgi

    spawn-fcgi -C 3 -u www-data -s /var/run/php-fcgi.sock -P /var/run/php-fcgi.pid -- /usr/bin/php5-cgi
    

    确保所有权限正确。

  2. 然后,这将转到我的 nginx 配置:

    upstream php-fcgi {
      server unix:/var/run/php-fcgi.sock;
    }
    

    这是背景的一部分http

    在定义虚拟主机的上下文中server,情况如下:

    location ~ \.php$ {
      fastcgi_pass php-fcgi;
      include /etc/nginx/fastcgi.conf;
    }
    

    注意这个/etc/nginx/fastcgi.conf文件。这个文件应该存在于我目前见过的每个 nginx 包中,如果没有,请谷歌搜索。你会在任何地方找到它。

使用 lighttpd 的一部分 spawn-fcgi 似乎不合常规,但这是 nginx 人员推荐的解决方案。

相关内容