如何从C扩展名(PHP源)读取和写入PHP超全局变量? [处于保留状态]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从C扩展名(PHP源)读取和写入PHP超全局变量? [处于保留状态]相关的知识,希望对你有一定的参考价值。
我们正在开发自定义邮件处理程序,并希望读取$ _SERVER超级全局变量。我们正在使用现有的mail.c代码。
在浏览了所有代码之后,我们需要一个简单的步骤,就可以从扩展中读取和写入超全局变量(例如$ _SERVER)的代码示例。
以下(答案)是我们想出的:
答案
以下是我们从/ext/info.c改编而来的内容,该内容有助于到达/phar/phar_object.c:
HashTable *_SERVER;
zval **stuff;
char *path_info;
int code;
zval *temp;
_SERVER = Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]);
/* Reading, find if exists */
if (SUCCESS == zend_hash_find(_SERVER, "php_SELF", sizeof("PHP_SELF"), (void **) &stuff)) {
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
/* Debug info echos on browser */
php_printf("<br/>code: %d - contents: %s", code, path_info);
/* Make zend compliant */
MAKE_STD_ZVAL(temp);
ZVAL_STRINGL(temp, path_info, code, 0);
/* Update _SERVER superglobal */
zend_hash_update(_SERVER, "MY_PHP_SELF", sizeof("MY_PHP_SELF"), (void *) &temp, sizeof(zval **), NULL);
}
此信息已发布,以便对他人有所帮助。我们找不到任何答案,因此反汇编了PHP源代码。希望发布更多调查结果...
以上是关于如何从C扩展名(PHP源)读取和写入PHP超全局变量? [处于保留状态]的主要内容,如果未能解决你的问题,请参考以下文章