2016-01-19 31 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版本,但我無法更新服務器。你知道

相關問題