2017-08-30 41 views
0

我遇到了一個看起來很小的問題,但我無法解決它。 這可能非常愚蠢,但我找不到任何解決方案。不適用於PHP 7.0的主義註釋

我正在使用PHP 7.1在PC上開發Symfony 3應用程序。一切都很好。我試圖在使用PHP 7.0的主機服務器上上傳它。

當我開始的網站,我收到此錯誤信息:

Fatal error: Uncaught TypeError: Return value of Doctrine\Common\Annotations\AnnotationRegistry::registerLoader() must be an instance of Doctrine\Common\Annotations\void, none returned in /home/clients/fb3f5a508aeeb6d39e6d7e1e47bda9ac/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php:117 Stack trace: #0 /home/clients/fb3f5a508aeeb6d39e6d7e1e47bda9ac/app/autoload.php(9): Doctrine\Common\Annotations\AnnotationRegistry::registerLoader(Array) #1 /home/clients/fb3f5a508aeeb6d39e6d7e1e47bda9ac/web/app.php(6): require('/home/clients/f...') #2 {main} thrown in /home/clients/fb3f5a508aeeb6d39e6d7e1e47bda9ac/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php on line 117

我發現那些鏈接這似乎是非常有幫助的: - Symfony fatal error - http://www.doctrine-project.org/2017/07/25/php-7.1-requirement-and-composer.html

但是,我不能」解決問題。我找不到哪個版本我需要與PHP 7.0兼容...

在我作曲的JSON配置文件,我有:

"platform": { 
    "php": "7.0" 
}, 
"require": { 
    "php": ">=5.5.9", 
    "doctrine/doctrine-bundle": "^1.6", 
    "doctrine/doctrine-cache-bundle": "^1.2", 
    "doctrine/orm": "^2.5", 
    "incenteev/composer-parameter-handler": "^2.0", 
    "misd/phone-number-bundle": "^1.2", 
    "sensio/distribution-bundle": "^5.0", 
    "sensio/framework-extra-bundle": "^3.0.2", 
    "symfony/monolog-bundle": "^3.0.2", 
    "symfony/polyfill-apcu": "^1.0", 
    "symfony/swiftmailer-bundle": "^2.3.10", 
    "symfony/symfony": "3.3.*", 
    "twig/twig": "^1.0||^2.0" 
}, 

我在做什麼錯?有任何想法嗎?

謝謝!

+0

嘗試刪除「vendor」目錄並重新運行作曲家安裝。之前我有類似的問題,併爲我解決了這個問題。 – tftd

回答

3

如果您使用的平臺爲「PHP」:「7.0」,那麼你將在本

"require": { 
     "php" : ">=7.0.21", 
     "symfony/symfony" : "3.3.4", 
     "doctrine/orm" : "2.5.10", 
     "doctrine/doctrine-bundle" : "1.6.8", 
     "doctrine/doctrine-cache-bundle" : "1.3.0", 
     ... 

嘗試如果嚴格對所有它會很容易找到特定版本的錯誤定義版本。

這對我很好。

+0

謝謝!我嘗試,但與作曲家更新時,我得到這些錯誤: 問題1 - 請求的包學說/ ORM(在v2.5.6鎖定,需要作爲2.5.10)是可滿足由教義/ ORM [v2.5.6],但這些與您的要求或最小穩定性相沖突。 –

+0

問題2 - 所要求的軟件包原則/原則束(鎖定在1.6.7,要求爲1.6.8)可以通過原則/原則束[1.6.7]滿足,但這些與您的要求或最小穩定性相沖突。 –

+0

問題3 - 爲symfony1.2/symfony的3.3.4安裝請求​​ - >由的symfony/symfony的[v3.3.4]可滿足的。 - 結論:不要安裝樹枝/樹枝v2.4.3 - 結論:不要安裝樹枝/樹枝v2.4.2 - 結論:不要安裝樹枝/樹枝v2.4.1 - 結論:不要安裝twig/twig v2.4.0 ...查看下一個評論... –

3

您的platform設置將被忽略,因爲您沒有將它包裝在config節點中。以下配置將工作:

{ 
    "config": { 
     "platform": { 
      "php": "7.0" 
     }, 
    }, 
    "require": { 
     "php": ">=5.5.9", 
     "doctrine/doctrine-bundle": "^1.6", 
     "doctrine/doctrine-cache-bundle": "^1.2", 
     "doctrine/orm": "^2.5", 
     "incenteev/composer-parameter-handler": "^2.0", 
     "misd/phone-number-bundle": "^1.2", 
     "sensio/distribution-bundle": "^5.0", 
     "sensio/framework-extra-bundle": "^3.0.2", 
     "symfony/monolog-bundle": "^3.0.2", 
     "symfony/polyfill-apcu": "^1.0", 
     "symfony/swiftmailer-bundle": "^2.3.10", 
     "symfony/symfony": "3.3.*", 
     "twig/twig": "^1.0||^2.0" 
    } 
} 
+0

謝謝!我試過了,但它仍然不更新或降級任何東西。 : -/ –

+0

運行'composer update -vvv'時可以顯示你使用'composer.json'文件得到的全部輸出嗎? – xabbuh

1

正確的方法是檢查的PHP您有:

php --version 

然後告訴作曲家自動黑名單不匹配

composer config platform.php 7.0.17 

版本,然後看看作曲家可以降級該軟件包(並且只有那個軟件包,我們不需要不相關的更新;幹運行=只看到,不做)

composer update doctrine/common --with-dependencies --dry-run 

,並在我的情況作曲家告訴我,我們還需要降級另包,所以我終於做到

composer update doctrine/common symfony/dom-crawler --with-dependencies 

其制定。