NGINX не виконує файли PHP


9

Я не зміг знайти відповіді на це. Встановлений PHP5 + NGINX + PHP-FPM і не може виконувати файли php, він отримує "На жаль, це посилання, як видається, порушено". помилка в CHROME. У мене немає жодного цінного звіту журналу помилок, у мене є 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. Крім того, додайте "налагодження" до рядка error_log, щоб отримати більш детальну інформацію (також перевірте головний nginx error_log (можливо, в / var / log)). Директива вашого імені сервера виглядає незвично - не впевнений, чи замінили ви її на цю посаду, чи вона насправді така. Як загальна рекомендація, перемістіть свою кореневу директиву з блоку розташування. (Остаточне (навряд чи) пропозиція: переконайтеся, що ваш сервер за замовчуванням не обслуговує HTML-сторінки, які ви можете бачити).
cyberx86

Відповіді:


9

він отримує "На жаль! Це посилання, здається, розірвано." помилка в CHROME.

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
Мабуть, причина в ОП була в чомусь цілком іншому.
Свен

Це не означає, що хтось, хто знайде свій шлях до цієї сторінки з цим питанням, матиме ту саму причину, що і ОП, вони, можливо, можуть мати причину, яку зробив Wejdross, і вважають цю відповідь корисною. Питання не є специфічним для цієї причини, воно є специфічним для цього симптому, і, очевидно, є кілька причин для нього, тому люди з різними причинами можуть опинитися тут.
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.