PHP 可捕获的致命错误 - 在服务器上

PHP Catchable Fatal Error - on server

当前面临新的 Silex (Symfony) PHP 应用程序的问题。如果我像 php -S localhost:8080 一样在本地启动它,一切都会立即正常运行。上传到服务器后直接500 Internal Server Error 输出如下日志:

[Tue Jan 19 16:15:24 2016] [error] [client 62.99.210.9] PHP Catchable fatal error:
Argument 2 passed to Symfony\Component\HttpKernel\Event\FilterControllerEvent::
__construct() must be an instance of Symfony\Component\HttpKernel\Event\callable,
instance of Closure given, called in /appl/www/htdocs/XXX/static/dashboard/php/
vendor/symfony/http-kernel/HttpKernel.php on line 131 and defined in /appl/www/htdocs/XXX/static/dashboard/php/
vendor/symfony/http-kernel/Event/FilterControllerEvent.php on line 35

composer.json:

{
    "require": {
        "silex/silex": "~1.2",
        "twig/twig"  : "1.*",
        "symfony/twig-bridge": "2.1.*"
    },
    "minimum-stability": "dev",
    "config": {
        "vendor-dir": "php/vendor"
    }
}

对于导致此类错误的任何想法表示赞赏。

PHP 版本:PHP 5.3.3 (cli)(内置:2014 年 10 月 23 日 06:58:46)

可调用类型提示自 PHP 5.4

起可用

Callbacks can be denoted by callable type hint as of PHP 5.4. This documentation used callback type information for the same purpose.

http://php.net/manual/en/language.types.callable.php

这里发生的事情是 PHP 尝试将类型提示 "callable" 解析为 class 名称,并且由于没有命名空间,它会查找 class "Symfony\Component\HttpKernel\Event\callable" 显然不存在。

我用的是php 5.3.9,我遇到了同样的问题 Silex 在 1.3.3+ 版本中安装 HttpKernel 什么使用 PHP 5.4+ 功能。

我的解决方案是使用 Silex 1.3.2。所有依赖项都使用 PHP 5.3.x 我不使用 require PHP 5.3 因为作曲家需要 5.4 才能工作。

最简单的方法是更新 php 版本,但我无法更新服务器。你懂的