使用 zend for PHP 扩展读取 php.ini(不是 PHP 语言)
我正在尝试使用 zend 从 php.ini 读取一些设置。我使用的 API 是
long zend_ini_long(char *name, uint name_length, int orig)
但它总是返回 0。我已经仔细检查了名称,并确保我在 php.ini 中指定的值大于 0。有什么我遗漏的吗?
I am trying to read some settings from php.ini using zend. The API that I am using is
long zend_ini_long(char *name, uint name_length, int orig)
But it always returns 0. I have double checked the name and also made sure that the value I am specifying in php.ini is greater then 0. Is there anything I am missing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
问题是 ZEND_STRL 没有返回该 API 预期使用方式的正确长度,因此不要使用它。
我应该补充一点,PHP 内部维护的大多数哈希表都假设 NUL 终止符包含在被哈希的字符串的长度中(它是整个二进制安全概念的一部分),这就是为什么我们使用 sizeof() 而不是strlen() 或 sizeof()-1。
The problem is that ZEND_STRL is not returning the right length for the way that this API is intended to be used, so don't use it.
I should add that most of the hash tables maintained internally by PHP assume that the NUL terminator character is included in the length of the string being hashed (its part of the overall binary safety concept), which is why we use sizeof() rather than strlen() or sizeof()-1.
您需要阅读 php.ini 文件吗?也许可以通过 phpinfo() 获得该信息?
但是,如果您一定要允许“www 用户”读取该文件吗?如果更改权限,它仍然返回 0 吗?
Do you need to read php.ini file? Maybe the information is available with phpinfo()?
But if you must are the "www user" allowed to read the file at all? If you change permissions does it still return 0?
您可以使用标准的 php 函数:ini_get('var-name');
例子:
You can use the standard php function: ini_get('var-name');
Example: