PHP数组索引0中的JSON-String

时间:2014-10-23 16:02:20

标签: php json angularjs zend-framework mamp

您好我的问题,因为我的Mamp Pro在我的MacOS开发系统上升级了新的PHP 5.3.29版本。

我在浏览器中使用AngularJS并将带有PUT / POST-Request的Form-Data发送到服务器。

POST请求:

{"checklistentyp":"SB Rollout","anzahl_filialen":"12","kam":"1","kb":"1"}

在服务器端我使用PHP 5.3.29宽度ZendFramework 1.12.8和RESTful 当我转储请求数据时:var_dump($this->_request->getParams());

我在索引0的数组中有我的JSON-String

array(5) {
 ["module"]=> string(3) "api"
 ["controller"]=> string(10) "checkliste"
 ["action"]=> string(4) "post"
 ["format"]=>string(4) "json"
 [0]=>string(73) "{"checklistentyp":"SB Rollout","anzahl_filialen":"12","kam":"1","kb":"1"}"
}

My Prodserver with Linux和PHP 5.3.10没有这个问题,一切正常。

在升级到新的MAMP版本之前,我的MacOS开发系统一切正常。

更新 用PHP 5.3.14同样的问题。我用于RESTful这个库https://github.com/codeinchaos/restful-zend-framework

更新2: 我想我发现了这个问题。当我这样做时:

$fc = Zend_Controller_Front::getInstance();
$cp = $fc->getRequest()->getHeader('Content-Type');
var_dump($cp);

转储输出为bool(false)

所以我认为问题出在Zend和PHP之间。 RESTful库中的context-Switcher无法检测Content-Typ并返回原始主体。有什么想法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

Mac OSX中存在一个PHP错误,目前已打开。见https://bugs.php.net/bug.php?id=66606&thanks=6

Zend Framework在某些环境中受到影响,因为该bug会阻止正确确定标头类型。 restful-zend-framework依赖于$ fc-> getRequest() - > getHeader(' Content-Type')方法来确定响应。见http://framework.zend.com/issues/browse/ZF-5705。本文档包含一种解决方法。

将以下代码添加到public / index.php应该修复。

if (isset($_SERVER['CONTENT_TYPE'])
   && !isset($_SERVER['HTTP_CONTENT_TYPE'])
) {
   $_SERVER['HTTP_CONTENT_TYPE'] = $_SERVER['CONTENT_TYPE'];
}