PHPUnit - 调用未定义的函数http_parse_headers()错误

时间:2014-08-31 22:44:00

标签: symfony phpunit

我有以下代码

protected function parse($header) { $headerArr = http_parse_headers($header); foreach ($headerArr as $key => $value) { echo $key.'=>'.$value; } }

其中$ header是一个http标头。此代码位于symfony2项目的PHP类中。我可以在浏览器中执行它,获得预期结果解析标头的键和值,如此

  • 响应代码=> 200
  • 响应状态=>确定
  • 日期=>太阳,2014年7月13日21:39:51 GMT
  • Server => Apache / 2.4.7(Ubuntu)
  • Last-Modified => Wed,26 Mar 2014 22:51:46 GMT
  • 的Etag => 502-4f58a50290480
  • 接受-范围=>字节
  • 的Content-Length => 1282
  • 内容处置=>附件; filename = mvc.zip
  • Keep-Alive => timeout = 5,max = 100
  • 连接=>保活
  • 的Content-Type =>应用程序/压缩

问题是当我尝试为函数parse()运行单元测试时,PHPUnit无法找到http_parse_headers()函数抛出“PHP致命错误:调用未定义函数http_parse_headers()

这怎么可能? 我该如何解决?

2 个答案:

答案 0 :(得分:1)

做一些研究我找到了解决问题的方法。实际上它已经在Stackoverflow中回答了here。来自控制台的php执行使用与从Web浏览器执行php不同的php.ini文件。所需的只是在相应的.ini文件中启用pecl_http扩展。 去做这个 在命令行中执行

php --ini

检查命令/行php使用的.ini文件的位置,然后启用文件中的扩展名

extension=http.so

从命令行

检查扩展是否已加载
php -m

答案 1 :(得分:0)

快速搜索PHP手册显示http_parse_headers是pecl扩展的一部分:PECL pecl_http> = 0.10.0

您的服务器和命令行php版本必须不同。 php手册有一个解决方法,但希望你可以更新命令行版本。