Назад | Перейти на главную страницу

Nginx + PHP-FPM, скрипты php не работают

Я установил стек LEMP на Linode, используя один из предлагаемых ими скриптов стека. На самом деле я не запускал его при загрузке, а вместо этого вводил команды вручную, так как казалось, что он не все устанавливает правильно.

В любом случае, после установки всего и запуска сервера и php-fpm без ошибок я создал phpinfo(); страница в расположении nginx по умолчанию (/var/www/index.php). Проблема в том, что он не выполняет скрипт и вместо этого отображается как статический файл. Кто-нибудь знает, как я могу подойти к этому?

Позвольте мне опубликовать вам несколько важных отрывков из моего руководства "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- Вы хорошо/

Я предполагаю, что в вашем файле конфигурации для vhost отсутствуют некоторые из частей, которые я опубликовал выше, или php5-fpm не запущен.

Эм, использовать PHP в nginx довольно просто, вам просто нужно использовать FastCGI для PHP.

  1. Я запускаю среду выполнения FastCGI для PHP с 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 контекст, который определяет ваш vhost, так сказать:

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

    Обратите внимание на /etc/nginx/fastcgi.conf файл. Этот файл должен присутствовать в каждом пакете nginx, который я видел до сих пор, если нет, погуглите. Вы найдете его везде.

Использование spawn-fcgi, которое является частью lighttpd, кажется неортодоксальным, но это рекомендованное решение пользователями nginx.