2016-01-19 38 views
0

目前正面临新的Silex(Symfony)PHP应用程序的问题。如果我在本地启动它,如php -S localhost:8080一切正常工作。我直接跟以下日志输出500内部服务器错误上传到服务器上后:PHP可捕获的致命错误 - 在服务器上

[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日6点58分46秒)

+0

你在本地和服务器上安装了哪个版本的php? –

+0

PHP 5.3.3(cli)(built:Oct 23 2014 06:58:46) – DominikAngerer

回答

1

可赎回型提示是可用的,因为PHP 5.4

回调可以通过调用被表示从PHP 5.4开始键入提示。这个 文档使用回调类型信息用于相同的目的。

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

这里发生的事情是PHP尝试解析类型提示“通知”,以类名和因为没有命名空间提供它看起来一类“的Symfony \分量\ HttpKernel \事件\赎回”这显然不存在。

+1

噢好吧****谢谢... – DominikAngerer

+1

当然,顺便说一句:你可能已经知道,但对于后代:如果你不能改变服务器上的PHP版本,您可以限制作曲家中所需的PHP版本。 – Adam

+0

如何限制要求使用作曲家的PHP版本? – DominikAngerer

0

我使用PHP 5.3.9和我有同样的问题 Silex在1.3.3+版本安装HttpKernel什么使用PHP 5.4+功能。

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

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

相关问题