如何启用PHP apache_request_headers()或将PHP更改为apache模块

我尝试将数据迁移到CentOS x64服​​务器上已经安装了PHP,WHM和其他一些服务。 我现有的许多PHP脚本依赖于PHP的apache_request_headers()函数,而当前服务器的PHPconfiguration不支持。 显然,编译PHP作为一个Apache模块是一个解决scheme,但是有没有其他的方法来启用它(无需卸载PHP,重新安装等等,以及所有相关的服务),也许像修改php.ini一样简单?

Apachefunction 只有在运行httpd SAPI(也称为mod_php) 时才可用。

股票CentOS PHP包使mod_php可用,所以他们已经足够允许他们。 如果你需要一个比股票包更新的版本,那么你将需要在某个地方find新的包,或者你需要用适当的SAPI自己构buildPHP或PHP包。

这里是设置PHP在Apache 2下运行的文档。该站点还包含Apache 1的信息。http://www.php.net/manual/en/install.unix.apache2.php

最直接相关的项目是6,7和8
6.build立你的php.ini
编辑你的httpd.conf来加载PHP模块。
8.向Apacheparsing某些扩展名为PHP。

如果您将PHP作为CGI / FastCGI运行,那么您不会获得apache_request_headers() (也称为getallheaders() )函数。

然而…

从5.4.0开始,PHP包含了在FastCGI中工作的这个函数的一个版本。

对于以前的PHP版本,你可以推出自己的。 虽然这种方法失去了标题名称的大小写敏感性(CGI / FastCGI大写所有标题名称),但对于99.9%的可能用途而言,这通常是足够好的。

这是我的代码很久以前写的,在LGPLv3下发布:

 if (!is_callable('getallheaders')) { # Convert a string to mixed-case on word boundaries. function uc_all($string) { $temp = preg_split('/(\W)/', str_replace("_", "-", $string), -1, PREG_SPLIT_DELIM_CAPTURE); foreach ($temp as $key=>$word) { $temp[$key] = ucfirst(strtolower($word)); } return join ('', $temp); } function getallheaders() { $headers = array(); foreach ($_SERVER as $h => $v) if (preg_match('/HTTP_(.+)/', $h, $hp)) $headers[str_replace("_", "-", uc_all($hp[1]))] = $v; return $headers; } function apache_request_headers() { return getallheaders(); } }