20

Here is the matter:

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());

And I get:

Array(
    [allow_url_fopen] => Array
        (
            [global_value] => 1
            [local_value] => 1
            [access] => 4
        )

    [allow_url_include] => Array
        (
            [global_value] => 
            [local_value] => 
            [access] => 4
        )

Why I cannot set that variable within the php ini_set function? The directive is specified as PHP_INI_ALL then it can be defined within the ini_set() function! http://php.net/manual/en/ini.list.php

Damiano Barbati
  • 3,356
  • 8
  • 39
  • 51

6 Answers6

17

display_errors

may be set at runtime (with ini_set()), but it won't have any affect if the script has fatal errors. This is because the desired runtime action does not get executed.

Use ini_set('display_errors','Off');

safe_mode

This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0. This directive belongs to PHP_INI_SYSTEM and Cannot be set via ini_set()

allow_url_include

Use ini_set('allow_url_include', 'On');

allow_url_fopen

This directive belongs to PHP_INI_SYSTEM and Cannot be set via ini_set()

Vijay Sarin
  • 1,326
  • 1
  • 11
  • 31
  • What is the alternative of `ini_set()` in php5.3? If you dont have access to apache config files. The only option you have is to include in your code. – indago Dec 12 '15 at 04:54
  • dude you are a legend, thanks very much, it has been bothering me all day. – Weilory Aug 19 '20 at 04:55
8

These variables cannot be changed within a user script. The access value means:

PHP_INI_SYSTEM    4          Entry can be set in php.ini or httpd.conf  

You can try to set it in .htaccess:

php_value  allow_url_include 1
wroniasty
  • 7,884
  • 2
  • 32
  • 24
1

My answer might be off-topic but I almost always come back to this question via Google when my ini_set calls are not working. Sharing my case might help others to solve an issue with ini_set more quickly.

So, in my case display_errors is disabled but PHP still displays the errors in the browser although I enabled log_errors and set error_log to C:\Windows\Temp\PHP_error.log.

First impression is always that ini_set is not working BUT it might be a permission issue. If PHP cannot access the log file then it will simply send the errors to the browser.

Solution: make sure PHP has the permission to access and write the log file.

ViRuSTriNiTy
  • 5,017
  • 2
  • 32
  • 58
0

Have you tried putting boolean values instead of 0 or 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());

Or try this:

ini_set('allow_url_include', 'on');
L0j1k
  • 12,255
  • 7
  • 53
  • 65
0

allow_url_fopen can't be modified by ini_set. It's because some ini statements has to be declared in an ini file only.

artragis
  • 3,677
  • 1
  • 18
  • 30
  • nope: here the available ini set directive, is not specified as an only php.ini directive! http://php.net/manual/en/ini.list.php – Damiano Barbati Sep 27 '12 at 09:44
  • what? i'm reading this by now: allow_url_include "0" PHP_INI_ALL PHP_INI_SYSTEM in PHP 5. Available since PHP 5.2.0. What am I missing in the php.net file? :( – Damiano Barbati Sep 27 '12 at 09:56
  • oh no i got itttttt, sorryyyyyyyyyyY!!! the second columns says the change in the php version!! sorry ;( – Damiano Barbati Sep 27 '12 at 09:56
-1

if you get this message in zabbix interface "ini_set(): Use of mbstring.internal_encoding is deprecated"

simply go to file vi /usr/local/share/zabbix/include/locales.inc.php and commet the line

#       ini_set('mbstring.internal_encoding', 'UTF-8');"

restart httpd & zabbix-server daemons , then try.. thats it.!

karthikr
  • 97,368
  • 26
  • 197
  • 188
ganesh pathak
  • 219
  • 2
  • 2