【问题标题】:PHP Error on Heroku but not on local environmentHeroku上的PHP错误但在本地环境中没有
【发布时间】:2013-12-17 07:37:49
【问题描述】:

在 Heroku 上,我在此文件中收到“解析错误:语法错误,/app/www/Embed/UrlResolver.php 中第 35 行的意外 '['”:https://github.com/oscarotero/Embed/blob/master/Embed/UrlResolver.php

奇怪的是它在我的本地环境中运行良好(MAMP)。一个区别是 Heroku 使用的是 PHP 5.3.27,而我的 MAMP 版本是 5.4.10,但这似乎不太可能是问题所在(脚本调用“PHP 5.3+”)。我很想对其进行测试,但我还没有找到一个 5.4 的 buildpack 不能让一切顺利。

此终端输出中的任何内容是否解释了错误?

-----> Removing .DS_Store files
-----> PHP app detected
-----> Bundling mcrypt version 2.5.8
-----> Bundling Apache version 2.2.25
-----> Bundling PHP version 5.3.27
-----> Discovering process types
   Procfile declares types -> (none)
   Default types for PHP   -> web

有人知道为什么会这样吗?

【问题讨论】:

    标签: php heroku


    【解决方案1】:

    iirc 正确支持 PHP 5.4

    $value = somethingWhichReturnsAnArray()[37];
    

    而 PHP 5.3 不会并且会报告意外的“[”。这可能是这样的。也许您使用的库说它是 5.3+ 实际上不是。查找该文件的第 35 行,看看它是否正在这样做。如果是这样,它应该很容易通过使用返回的数组/集合的中间变量来修复。

    【讨论】:

    • 第 35 行是:return [$content, $result];
    • 这绝对是 5.4 的功能。将其更改为 return array($content, $result);你应该没事。尽管作者很可能在代码的其他地方也使用了 5.4+ 语言特性。无论哪种方式,都值得将它作为一个错误报告给编写它的人。
    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 2018-02-22
    • 2017-09-03
    • 2021-12-08
    • 2014-04-27
    • 1970-01-01
    相关资源
    最近更新 更多