此问题已在此处有答案:
Bitmask in PHP for settings?(2个答案)
3天前关闭。
我将开始使用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会显示相应的位掩码值。
那么,谁能解释一下“访问”?如何理解它的bitmask值?
2条答案
按热度按时间xdyibdwo1#
如果你在“返回值”一节中阅读了a little further,你会发现link to the change modes及其含义:
1
:PHP_INI_USER
:条目可以在用户脚本中设置(如使用ini_set())或在Windows注册表中设置2
:PHP_INI_PERDIR
:可以在php.ini、.htaccess或httpd.conf中设置条目4
:PHP_INI_SYSTEM
:可以在php.ini或httpd.conf中设置条目7
:PHP_INI_ALL
:可以在任何地方设置条目z3yyvxxp2#
正确值
我在PHP源代码中查找了它,找到了可以定义为常量的内容:
要从
ini_get_all()
检查访问级别,您可以执行以下操作(以allow_url_fopen
为例):仅供参考
在main/php_ini. h中的PHP源代码中,这些常量被定义为Zend等价物的别名:
https://github.com/php/php-src/blob/c8aa6f3a9a3d2c114d0c5e0c9fdd0a465dbb54a5/main/php_ini.h#L45(第45至49行)
Zend等价物在Zend/zend_ini. h中定义如下:
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的加法。