Правильные значения
Принятый ответ дает неправильные значения. Поэтому я посмотрел его в исходном коде PHP и нашел то, что вы можете определить как свои константы:
define('PHP_INI_USER', 1)
define('PHP_INI_PERDIR', 2)
define('PHP_INI_SYSTEM', 4)
define('PHP_INI_ALL', PHP_INI_USER | PHP_INI_PERDIR | PHP_INI_SYSTEM); // = 7
Чтобы проверить уровень доступа с ini_get_all()
, вы можете сделать (используя allow_url_fopen
в качестве примера):
$all = ini_get_all();
$config = $all['allow_url_fopen'];
$isUserLevel = $config['access'] & PHP_INI_USER; // PHP_INI_USER = 1
Для справки
В исходном коде PHP в main / php_ini.h эти константы определены как псевдонимы эквивалентов Zend:
#define PHP_INI_USER ZEND_INI_USER
#define PHP_INI_PERDIR ZEND_INI_PERDIR
#define PHP_INI_SYSTEM ZEND_INI_SYSTEM
#define PHP_INI_ALL ZEND_INI_ALL
https://github.com/php/php-src/blob/c8aa6f3a9a3d2c114d0c5e0c9fdd0a465dbb54a5/main/php_ini.h#L45 (строки с 45 по 49)
Zend-эквиваленты определены в Zend / zend_ini.h следующим образом:
#define ZEND_INI_USER (1<<0)
#define ZEND_INI_PERDIR (1<<1)
#define ZEND_INI_SYSTEM (1<<2)
#define ZEND_INI_ALL (ZEND_INI_USER|ZEND_INI_PERDIR|ZEND_INI_SYSTEM)
https://github.com/php/php-src/blob/c8aa6f3a9a3d2c114d0c5e0c9fdd0a465dbb54a5/Zend/zend_ini.h#L24 (строки с 24 по 28)
<<
- оператор побитового сдвига в C ++, поэтому 1<<0
= 1, 1<<1
= 2, 1<<2
= 4. ZEND_INI_ALL
- это сложение 1 + 2 + 4 = 7.