我很抱歉混淆了问题的标题,我会试着澄清问题所在.
我正在使用Mongrel2服务器,我正在编写一个可以访问原始HTTP请求数据的PHP处理程序.因为我在Mongrel2后面有PHP,所以没有自动创建$ _POST,$ _GET,$ _COOKIE和$ _REQUEST变量.
问题是 - 有没有办法可以将原始HTTP请求发送到PHP函数(或任何东西),这将产生使用Apache + PHP时通常可用的超全局变量?
注意:我可以手动解析HTTP请求并自己创建这些变量,但是我无法找到任何关于PHP 如何进行 HTTP解析并导入超全局的文档.如果可能的话,我想自动完成这个超全局创建过程,而不必自己解析HTTP请求.
谢谢你的任何意见.
创建这些变量是PHP的胆量内处理深,中main/php_variables.c,在php_auto_globals_create_get()和类似的功能.从PHP 5.4.3开始:
static zend_bool php_auto_globals_create_get(const char *name, uint name_len TSRMLS_DC)
{
zval *vars;
if (PG(variables_order) && (strchr(PG(variables_order),'G') || strchr(PG(variables_order),'g'))) {
sapi_module.treat_data(PARSE_GET, NULL, NULL TSRMLS_CC);
vars = PG(http_globals)[TRACK_VARS_GET];
} else {
ALLOC_ZVAL(vars);
array_init(vars);
INIT_PZVAL(vars);
if (PG(http_globals)[TRACK_VARS_GET]) {
zval_ptr_dtor(&PG(http_globals)[TRACK_VARS_GET]);
}
PG(http_globals)[TRACK_VARS_GET] = vars;
}
zend_hash_update(&EG(symbol_table), name, name_len + 1, &vars, sizeof(zval *), NULL);
Z_ADDREF_P(vars);
return 0; /* don't rearm */
}
Run Code Online (Sandbox Code Playgroud)
这最终直接调用SAPI(例如,Apache模块/ CGI/FastCGI /等)来获取变量.我不认为如果你处于一个奇怪的环境中你可以改变它的工作方式,其中GET/POST/etc变量不是PHP期望它们的地方.
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |