NGINX не выполняет файлы PHP


9

Я не мог найти ответ на это. Установил PHP5 + NGINX + PHP-FPM и не может запускать файлы php, он получает сообщение «Ой! Эта ссылка, похоже, не работает». ошибка в ХРОМЕ. У меня нет ценного отчета об ошибках, у меня есть index.php в корне, я попытался создать собственный файл phpinfo.php, но ничего не получилось.

Я могу загружать HTML-файлы, но не могу PHP.

Вот мой локальный конфиг сайта в NGINX:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/website$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

Поменял владельца всего каталога на www-data: www-data, сделал 777 на php-файле, ничего. Перезапустил nginx, FPM, ничего.

Помогите? :(


посмотрите в своем журнале ошибок
Майк

Уже сделал: «У меня нет ценного отчета об ошибках». Это абсолютно пусто.
Габриэль А. Зоррилья

Вам нужно больше данных для диагностики проблемы. Я бы предложил начать с добавления 'fastcgi_intercept_errors on;' в ваш конфиг (если не в fastcgi_params) для регистрации любых ошибок FPM. Также добавьте 'debug' в строку error_log, чтобы получить более подробную информацию (также проверьте основной файл nginx error_log (возможно, в / var / log)). Ваша директива server_name выглядит необычно - не уверен, что вы заменили ее для этого поста или она действительно такая. В качестве общей рекомендации удалите корневую директиву из своего блока местоположения. (Последнее (маловероятное) предложение: убедитесь, что ваш сервер по умолчанию не обслуживает HTML-страницы, которые вы видите).
cyberx86

Ответы:


9

он получает сообщение «Ой! Эта ссылка, похоже, не работает». ошибка в ХРОМЕ.

Chrome показывает свою страницу ошибок, если страница ошибок меньше 512 байт.

Я подозреваю, что у вас есть следующая строка fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

и если это так, поскольку rootдиректива определена в location /, она никогда не будет применена location ~ \.php$, таким образом, SCRIPT_FILENAMEстановится URI.

Это можно решить, переместив rootдирективу в serverконтекст уровня:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}

Бинго. Перенес корень на серверный блок как предложено и работает. Спасибо!
Габриэль А. Зоррилья

@quanta: ОП редактировал конфигурацию в своем вопросе? Поскольку это жестко заданный путь, он все равно должен прекрасно работать, когда корневая директива определена в контексте местоположения. Единственный случай, когда это не сработало бы, это если он определил SCRIPT_FILENAME в своем файле fastcgi_params, используя $ document_root, и таким образом переопределил свой жестко закодированный.
Мартин Фьордвальд

@MartinF: Нет, ОП не редактировал конфигурацию. Вы правы. Я отредактирую свой ответ.
кванты

-3

В моем случае отсутствовал пакет php-zip. Чтобы это исправить, я запустил:

yum install -y php-zip
systemctl restart php-fpm nginx

3
По-видимому, причина для ОП была для чего-то совершенно другого.
Свен

Это не означает, что у кого-то, кто найдет путь к этой странице с этой проблемой, будет та же причина, что и у ОП, у него вполне может быть причина, которую сделал Вейдросс, и он найдет этот ответ полезным. Вопрос не специфичен для этой причины, он специфичен для этого симптома, и, очевидно, для этого есть несколько причин, поэтому люди с разными причинами могут оказаться здесь.
Synetech

-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;

4
Добро пожаловать в сбой сервера! Похоже, у вас есть знания, чтобы дать хороший ответ здесь, но, пожалуйста, подумайте о том, как читать хороший ответ? в нашем справочном центре, а затем пересмотрите и расширьте свой ответ. Ваши Команды / Код / Настройки могут быть технически решением, но некоторые пояснения приветствуются. Заранее спасибо.
HBruijn

4
Кроме того: даже если эта единственная строка решает проблему, куда она идет? ОП показывает два locations. Линия идет в одном? Другой? Обе? Пожалуйста, отредактируйте свой ответ, чтобы завершить его.
Давид Макогон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.