Чем может быть вызвано странное поведение PHP при замене параметров через Nginx?

Нужно было поменять конфиг в php, но перезапускать его не хотелось.
Решил всё сделать через fastcgi_param php_admin_value, я всё сделал, продолжил работать, но заметил, что периодически стал отваливаться сайт с ошибкой 500. В логах пусто, ни nginx, ни php не знали что что-то упало.

Выяснилось, что дело в строчке(пишу по памяти):
fascgi_param PHP_ADMIN_VALUE "pinba.enambled=0";

Точнее не в том, что в ней написано, а в самом факте присутствия любого нового параметра через fastcgi_param php_admin_value.
Объединив две строчки в:
fascgi_param PHP_ADMIN_VALUE "open_base_dir=/var/www;pinba.enambled=0"

Сайт продолжил падать, а странное то, что падал не всё время. Раз в несколько обновлений страницы, из-за этого сразу и не поняли, что дело в конфиге. Всё пофиксилось, когда между установкой параметров было вписано "\n "(...www;\n pinba...).
Меня интересует:
- почему падал сайт не постоянно, если установка параметров неверная
- почему дебаг silex'а через раз выводил то дефолтный параметр, то тот, что я выставил

Просто запомнить, как делать не хочу. Интересно понять, столь странное поведение и тем более в логах было пусто и нужно знать куда копать. Надеюсь на вашу помощь.
  • Вопрос задан
  • 357 просмотров
Пригласить эксперта
Ответы на вопрос 1
@theg4sh
По факту получается, что вы передаете строку php-конфига через fastcgi_param PHP_ADMIN_VALUE.
Следовательно нужно придерживаться его стандарта и вероятно поэтому все, что было после точки с запятой интерпретировалось как коментарий и "; pinba.enabled=0" отбрасывалось. Попробуйте ради эксперимента заменить ";\n " на "\n", полагаю должно сработать.

К тому же, не будет ли лучше/удобней разбить установку php-параметров на два nginx-параметра?
fastcgi_param PHP_ADMIN_VALUE "open_base_dir=/var/www"
fastcgi_param PHP_ADMIN_VALUE "pinba.enabled=0"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы