当前正面临新的Silex(Symfony)PHP应用程序的问题。如果我像php -S localhost:8080
一样在本地启动它,一切马上就可以正常工作。上传到服务器后,我直接收到带有以下日志输出的 500 内部服务器错误:
[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
作曲家.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) (构建时间: Oct 23 2014 06:58:46)
可调用类型提示从 PHP 5.4 开始可用
从 PHP 5.4 开始,回调可以用可调用的类型提示来表示。这 文档将回调类型信息用于相同的目的。
http://php.net/manual/en/language.types.callable.php
这里发生的事情是PHP试图将类型提示"可调用"解析为类名,并且由于没有提供命名空间,它寻找一个类"Symfony\Component\HttpKernel\Event\callable"
我使用 php 5.3.9 并且有同样的问题Silex在1.3.3+版本中安装了使用PHP 5.4+功能的HttpKernel。
我的解决方案是使用 Silex 1.3.2。所有依赖项都使用 PHP 5.3.x我不使用需要 PHP 5.3,因为作曲家需要 5.4 才能工作。
简单的方法是更新php版本,但我无法更新服务器。你知道的