Ini_set не работает
Вот вопрос:
ini_set('display_errors', '1');
ini_set('safe_mode', '0');
ini_set('allow_url_fopen', '1');
ini_set('allow_url_include', '1');
print_r(ini_get_all());
И я получаю:
Array(
[allow_url_fopen] => Array
(
[global_value] => 1
[local_value] => 1
[access] => 4
)
[allow_url_include] => Array
(
[global_value] =>
[local_value] =>
[access] => 4
)
Почему я не могу установить эту переменную внутри функции php ini_set? Директива указана как PHP_INI_ALL, тогда ее можно определить внутри функции ini_set()!
http://php.net/manual/en/ini.list.php
Ответы
Ответ 1
display_errors
может быть установлен во время выполнения (с ini_set()
), но это не повлияет, если script имеет фатальные ошибки. Это связано с тем, что желаемое действие во время выполнения не выполняется.
Используйте ini_set('display_errors','Off');
safe_mode
Эта функция была DEPRECATED с PHP 5.3.0 и удалена с PHP 5.4.0. Эта директива принадлежит PHP_INI_SYSTEM
и не может быть установлена через ini_set()
allow_url_include
Используйте ini_set('allow_url_include', 'On');
allow_url_fopen
Эта директива принадлежит PHP_INI_SYSTEM
и не может быть установлена через ini_set()
Ответ 2
Эти переменные не могут быть изменены внутри пользователя script. Значение access
означает:
PHP_INI_SYSTEM 4 Entry can be set in php.ini or httpd.conf
Вы можете попробовать установить его в .htaccess
:
php_value allow_url_include 1
Ответ 3
Вы пытались помещать значения boolean вместо 0 или 1?
ini_set('display_errors', true);
ini_set('safe_mode', false);
ini_set('allow_url_fopen', true);
ini_set('allow_url_include', true);
print_r(ini_get_all());
Или попробуйте следующее:
ini_set('allow_url_include', 'on');
Ответ 4
allow_url_fopen не может быть изменен ini_set. Это потому, что некоторые инструкции ini должны быть объявлены только в ini файле.
Ответ 5
Мой ответ может быть не по теме, но я почти всегда возвращаюсь к этому вопросу через Google, когда мои звонки ini_set
не работают. Совместное использование моего дела может помочь другим быстрее решить проблему с ini_set
.
Итак, в моем случае display_errors
отключен, но PHP все равно отображает ошибки в браузере, хотя я включил log_errors
и установил error_log
в C:\Windows\Temp\PHP_error.log
.
Первое впечатление всегда заключается в том, что ini_set не работает, но это может быть проблема с разрешениями. Если PHP не может получить доступ к файлу журнала, он просто отправит ошибки в браузер.
Решение: убедитесь, что у PHP есть права доступа и записи в файл журнала.
Ответ 6
если вы получите это сообщение в интерфейсе zabbix "ini_set(): Use of mbstring.internal_encoding is deprecated"
просто перейдите в файл vi/usr/local/share/zabbix/include/locales.inc.php и соедините строку
# ini_set('mbstring.internal_encoding', 'UTF-8');"
перезапустите httpd
и zabbix-server
демоны, затем попробуйте.. thats it.!