2016-08-19 4 views
1

Недавно я перенес проект из Apache & PHP5 в nginx & PHP7. При отладке моего приложения я заметил, что ini_set больше не работает, по крайней мере, для следующих параметров.ini_set не работает с nginx & php7-fpm

ini_set('display_errors', 'On'); 

ini_set('log_errors', 'On'); 
ini_set('error_log', __DIR__ROOT . 'var/log/main-errors.log'); 

Ни 'On', 'on', 1, '1' ни true работают. ini_get_all() дает те же результаты до и после звонка ini_set().

Я знаю, что могу изменить эти параметры в файле конфигурации пула, но мне нужно включить только display_errors для одной конкретной части, а часть API приложения использует тот же пул, но должна регистрироваться в отдельном файле.

Можно ли использовать ini_set() без изменения конфигурационных файлов пула/nginx? Или эта работа и это ошибка?


следующие настройки, однако, кажется, работают с ini_set():

ini_set('memory_limit', '256M'); 
ini_set('session.save_path', $sessionSettings['save_path']); 
ini_set('zlib.output_compression', 'On'); 
ini_set('zlib.output_compression_level', '3'); 
+0

Ссылки в ответе на этот знакомый вопрос могут помочь вам http://stackoverflow.com/questions/12103807/how-to-can-not-set-php-ini-values-in-run-time-using-using-using- ini-set-method Или простой поиск google на 'ini_set nginx fpm' даст вам много чтения – RiggsFolly

+0

Я тоже видел этот вопрос, но он не похож, поскольку настройки, которые я пытаюсь установить, - это настройки' PHP_INI_ALL', а не ' PHP_INI_SYSTEM' или 'PHP_INI_PERDIR', как в этом вопросе. И, конечно же, у меня уже есть Googled, но я не могу найти решение для этих конкретных настроек. – redelschaap

+0

Но ссылка на настройку, разрешенную для chnaged из php-скрипта, может быть полезна – RiggsFolly

ответ

1

я была аналогичная проблема с ini_set не работает. очевидно, что php.ini имеет ini_set в директиве disabled_functions. поэтому ini_set не будет работать до тех пор, пока это не будет изменено.

+0

OP говорит 'ini_set' работает для некоторых значений – Phil

+0

если он работает для некоторых значений, то можно сослаться на: http://php.net/manual/en/ini.list.php для того, что может быть установлено и не может быть установлен с помощью функции ini_set. однако, если переменная в этом списке имеет параметр Changeable: PHP_INI_ALL, а ini_set не работает, я бы предложил вам, что ini_set находится в директиве disabled_functions для php.ini. –

+0

Как я уже сказал в своем вопросе, 'ini_set' работает для некоторых значений. Он просто не работает для 'display_errors',' log_errors' и 'error_log', которые являются всеми директивами' PHP_INI_ALL'. – redelschaap

Смежные вопросы