【问题标题】:Add entry to $_SERVER in extension在扩展中添加条目到 $_SERVER
【发布时间】:2011-12-15 02:33:53
【问题描述】:

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

【问题讨论】:

    标签: php c php-internals


    【解决方案1】:

    这是我通常使用的:

    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 了解可能的值类型。

    【讨论】:

    • 谢谢,这看起来不错;并再次感谢该链接,我无法找到该链接真是太遗憾了;)
    【解决方案2】:

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

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

    【讨论】:

    • 呃...他正在用 C 语言编写 PHP 扩展,而不是 PHP 驱动的网站。
    • 确实如此。我的错。我读得不够仔细。无论如何,AFAIK $_SERVER 数组包含服务器软件提供的环境变量,所以我认为不可能以任何其他方式添加它们。
    • $_SERVER 包含环境变量,但由 PHP 填充(例如在 sapi/cli/php_cli.c 中)。但是应该可以从扩展中添加条目并且独立于任何 sapi。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多