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.!