После обновления nginx на моем сервере все PHP-сайты перестали работать. Раньше у меня в файле fastcgi_params было только это:
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
А внутри конфигурационных файлов PHP-сайта был такой блок:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
Однако это больше не работает. Это работает, только если у меня есть это в файлах конфигурации для каждого сайта:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Я должен установить SCRIPT_FILENAME здесь, а не в "fastcgi_params". Перед ним также должен быть $ document_root. Ни "$ document_root $ fastcgi_script_name", ни "$ fastcgi_script_name" не работают, если они установлены во включенном файле fastcgi_params.
Меня не особо беспокоит то, что теперь мне нужно добавить к нему $ document_root (но мне любопытно, знает ли кто-нибудь, почему это сломалось или почему оно работало раньше), но я бы предпочел сохранить общие функции в файле fastcgi_params для простота, поэтому я хотел бы знать, почему это не работает.
Я собираюсь предположить, что ваша конфигурация, вероятно, представляет собой "серию" плохих приемов, поэтому я рекомендую вам прочитать это: http://blog.martinfjordvald.com/2010/07/nginx-primer/
Короче можно (и нужно) поставить fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
в ваш fastcgi_params (или просто включите вместо него файл fastcgi.conf), но из-за того, как nginx наследует значения конфигурации между уровнями, вам необходимо убедиться, что ваша корневая директива определена в блоке сервера, а не в location /.
В общем, это очень хороший совет, поместите как можно больше на самый верхний уровень, и вы избежите тонны дублирования.
Что-то сломалось после последнего обновления до "передачи выполнения в php-fpm". 0.8.53-0ppa5 ~ ясный версия для моего launchpad.net/~nginx/+archive/stable ppa версия nginx. Я использую 10.04 LTS x64. Проблема возникла на всех моих серверах Ubuntu 10.04 LTS и VPS, когда я автоматически обновил nginx из указанного выше репозитория ppa. https://launchpad.net/~nginx/+archive/stable
Я исправил это на время, понизив версию Ubuntu 10.04 LTS Canonical до версии 7.65. http://packages.ubuntu.com/lucid/nginx
Я пробовал много перестановок затронутого параметра -> $ script_filename , без Удачи.
Как ни странно, я подумал, что это связано с тем, что они добавили строку для определения $ SCRIPT_FILENAME внутри fastcgi_params .
- Исправление: добавлен SCRIPT_FILENAME в fastcgi_params
(из https://launchpad.net/~nginx/+archive/stable/+packages нажмите на пакет lucid, чтобы увидеть список изменений со строкой выше) Похоже, что это не имеет никакого эффекта; Я сдался и перешел на более раннюю версию, чтобы сохранить свои производственные PHP-сайты.
Я хотел бы знать, может ли кто-нибудь получить еще один POV по этому вопросу.
Пожалуйста, проголосуйте за, если вас это тоже коснется.
Я не уверен, какой тип QA используется для репозиториев ppa, отмеченных как стабильные на панели запуска. (Я относительный новичок в мире Launchpad.)