PHP:如何理解ini_get_all函数访问的位掩码值

PHP:如何理解ini_get_all函数访问的位掩码值,php,apache,apache-config,Php,Apache,Apache Config,我开始使用ini_get_all函数来检索共享主机服务器上的所有配置选项。最后我得到了这个数组块: [allow_call_time_pass_reference] => Array ( [global_value] => 1 [local_value] => 1 [access] => 6 ) [allow_url_fopen] => Array ( [global_valu

我开始使用ini_get_all函数来检索共享主机服务器上的所有配置选项。最后我得到了这个数组块:

[allow_call_time_pass_reference] => Array
    (
        [global_value] => 1
        [local_value] => 1
        [access] => 6
    )

[allow_url_fopen] => Array
    (
        [global_value] => 1
        [local_value] => 1
        [access] => 4
    )
PHP手册仅给出了以下描述:

指令可能具有多个访问级别,这就是access显示适当位掩码值的原因。 那么,有人能解释一下“访问”吗?如何理解它的位掩码值?

如果您已经阅读了“返回值”部分的内容,您就会找到它的名称及其含义:

  • 1
    PHP\u INI\u USER
    :可以在用户脚本(如INI\u set())或Windows注册表中设置条目
  • 4
    PHP\u INI\u系统
    :可以在PHP.INI或httpd.conf中设置条目
  • 6
    PHP\u INI\u PERDIR
    :可以在PHP.INI、.htaccess或httpd.conf中设置条目
  • 7
    PHP\u INI\u ALL
    :条目可以在任何地方设置

正确的值

被接受的答案提供了错误的值。因此,我在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\u get\u all()
检查访问级别,可以执行以下操作(以
allow\u url\u fopen
为例):

供参考

在main/PHP_ini.h中的PHP源代码中,这些常量被定义为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
(第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)

#定义ZEND#u INI#u用户(哇,谢谢。坦率地说,我读了那些页面(更像是我的眼睛看到了,但我的大脑否认了)到今天为止,每个值的数字似乎已经从该页上消失了,所以这个答案非常有用。谢谢。@macl,我很高兴它帮助了您。如果您再次遇到这个问题,您也可以打印常量并查看它们是什么。
#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)