2014-08-31 16 views
0

我有以下代碼PHPUnit的 - 調用未定義功能http_parse_headers()錯誤

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

其中$頭是一個HTTP標頭。此代碼位於symfony2項目中的PHP類中。我可以在瀏覽器中執行成爲一個得到預期的結果是這樣

  • 二維碼=> 200個
  • 響應狀態解析頭的鍵和值=> OK
  • 日期=>孫,13 2014年7月21時39分51秒GMT
  • 服務器=>的Apache/2.4.7(Ubuntu的)
  • 上次修改=>星期三,2014年3月26日22時51分46秒GMT
  • 的Etag => 502-4f58a50290480
  • Accept-Ranges =>字節
  • Content-Length => 1282
  • Content-Disposition => attachment;文件名= mvc.zip
  • 保持活動=>超時= 5,最大= 100
  • 連接=>保持活動
  • 的Content-Type =>應用程序/壓縮

問題是,當我嘗試爲函數parse()運行一個單元測試,PHPUnit找不到http_parse_headers()函數拋出「PHP致命錯誤:調用未定義的函數http_parse_headers()

這是可行的嗎? How我能修好嗎?

回答

0

快速搜索PHP手冊顯示http_parse_headers是pecl擴展的一部分:PECL pecl_http> = 0.10.0

您的服務器和您的命令行php版本必須不同。 PHP手冊有一個解決方法,但希望你可以更新你的命令行版本。

+0

我的服務器是我自己的計算機,所以我在與我的服務器相同的地方運行命令行。我的PHP版本顯示的PHP版本命令是PHP 5.5.9-1ubuntu4(cli)(內置:2014年4月9日17時08分27秒) – 2014-09-04 20:05:57

1

做一些研究我找到了解決我的問題。其實它已經在Stackoverflow中被回答了here。從控制檯執行的php使用不同的php.ini文件,而不是從web瀏覽器執行php。所需要的就是在相應的.ini文件中啓用pecl_http擴展。 爲此 文件

extension=http.so 

要檢查是否在執行在命令行

php --ini 

以檢查位於通過命令/行PHP使用.ini文件,那麼啓用擴展該擴展加載從命令行運行

php -m 
相關問題