2011-10-25 57 views
2

我需要在PHP扩展中向超全局$ _SERVER数组添加条目。我相当肯定php_register_variable()会做这项工作,把关键和价值作为论据;但我不知道要传递什么作为第三个参数。不幸的是关于这个主题的文档相当稀少。

回答

2

这是我通常使用:

zval** arr; 
if (zend_hash_find(&EG(symbol_table), "_SERVER", 8, (void**)&arr) != FAILURE) { 
    add_assoc_string(*arr, "foo", "bar", 1); 
} 

可能的值类型见Extension Writing Part II: Parameters, Arrays, and ZVALs

+0

谢谢,这看起来不错;并再次感谢那个链接,我无法找到这种耻辱;) – wonk0

0

您可以使用mod_env模块通过Apache的SetEnv指令进行设置。

参见Setting a Php $_SERVER value ($_SERVER['something']) using Apache .htaccess以供参考。

+0

呃...他正在用C语言编写PHP扩展,而不是PHP支持的网站。 –

+0

的确如此。我的错。我没有仔细阅读。无论如何,AFAIK $ _SERVER数组包含服务器软件提供的环境变量,所以我认为不可能以任何其他方式添加它们。 – budwiser

+0

所有PHP superglobals都是可写的。即使从PHP代码! –