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

Страницы php на сервере nginx + php-fpm не загружаются

Я установил сервер nginx и php-fpm в системе CentOS 6 (размещенной в Amazon EC2), выполнив следующие инструкции:

http://emka.web.id/linux/centos-linux/2011/installing-nginx-with-php-and-php-fpm/

Статический html (index.html) загружается, когда я перехожу к своему общедоступному DNS, предоставленному Amazon, поэтому nginx работает, но когда я пытаюсь загрузить страницу php в том же каталоге, что и index.php или hello.php, возникает ошибка На странице отображается следующее сообщение: «Страница, которую вы ищете, временно недоступна. Повторите попытку позже». Когда я запускаю php-fpm без параметров и снова пытаюсь загрузить страницу php, эта страница мне не отправляется, а отображается текстовое сообщение: «Входной файл не указан».

Каталог по умолчанию, в котором находятся файлы, - / usr / share / nginx / html.

Я думаю, что что-то не так с моей конфигурацией, но я не знаю, есть ли это в файлах конфигурации php или nginx. Несколько строк в /etc/nginx/nginx.conf, которые я считаю наиболее актуальными:

     #
    # The default server
    #
    server {
        listen       80;
        server_name  _;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

        error_page  404              /404.html;
        location = /404.html { 
root   /usr/share/nginx/html;
        }
# redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }

Между прочим, все операции установки и «nginx start» и «php-fpm» были выполнены пользователем root, потому что я могу получить доступ только через SSH с этим суперпользователем. Я не знаю, это связано с моей проблемой, но я знаю, что с sudo рекомендуется использовать обычного пользователя.

Может быть, попробуйте указать полный путь в вашем fastcgi_param (вот как я это сделал): SCRIPT_FILENAME / var / www / scripts / $ fastcgi_script_name

Кроме того, что находится в журналах php-fpm и nginx? Не могли бы вы добавить определение пула fpm?

  • Во-первых, у вас разные root в location / и location ~ \.php$
  • Во-вторых, не задавайте жестко значение пути для SCRIPT_FILENAME.

"Не указан входной файл" означает, что PHP не может найти файл, который Nginx предлагает ему искать. Итак, определим SCRIPT_FILENAME в fastcgi_params:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

(или включить fastcgi.conf вместо)

и измените местоположение PHP на что-то вроде этого:

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        include        fastcgi_params;
    }

это будет работать.