2016-07-28 117 views
5

我使用的是PHP 7.0.4,一切運行都很順利,我只是升級到了PHP 7.0.8,並開始出現像這樣的錯誤地點。升級到PHP 7.0.8後出現「致命錯誤:無法聲明類」

Fatal error: Cannot declare class Plugins\Users\Plugin because the name is already in use in /var/www/html/plugins/Users/Plugin.php on line 8

沒有人有任何想法怎麼回事,我一直在讀通過更改日誌,但是這是一個補丁更新不應該破壞什麼?

此外,如果沒有解決方案發現這個問題,我怎麼能降級回到7.0.4? (我使用Ubuntu 16.04和我剛剛升級到發行點)

到目前爲止總結的評論:

  • 我曾嘗試禁用opcache這並沒有解決我現在用的問題
  • 作曲家的自動加載機 - 我沒有使用requireinclude任何地方
  • 這個錯誤發生在很多類,所以它顯然不是一個代碼問題(在我的部分),此外代碼工作之前,我升級到7.0.8
+1

小心分享侵略的代碼? – Machavity

+0

@Machavity它不是一個類,如果我從代碼中刪除這個類,那麼另一個類拋出這個錯誤,這是PHP中的一些問題,因爲正如我所說的,它在30分鐘前都運行良好。 –

+0

錯誤消息似乎很清楚 – 2016-07-28 01:12:05

回答

1

好吧,顯然我被升級後發生錯誤的事實蒙上了一層陰影,即使它在我眼前,我仍然忽略它。

這是有問題的類的第幾行(顯然一堆其他類):

<?php 

namespace Plugins\Users; 

use FW\Utility\Models\Plugins\Plugin; 

class Plugin extends Plugin { 

如你,最後我,可以清楚地看到,在類名Plugin是模糊的,但沒有在7.0.4,這是奇怪,可能是由bishopanswer

想我應該聽Machavity描述的bug引起的,呵呵。

+0

很高興你把它修好了;) – Machavity

4

沒有足夠的數據來說明確的,但我懷疑opcache。那個錯誤,實際上,originates in opcache所以我懷疑,直到這一點,這個錯誤已經被幾個操作碼錯誤之一隱藏,可能#66773

您合法擁有需要修復的自動加載問題。重命名類,檢查你的命名空間,並刪除任何硬性要求。

可能能夠通過禁用/重新啓用opcache或恢復到7.0.4來恢復以前的錯誤行爲,但真正的錯誤只被自動加載和opcache的特定組合所掩蓋。事實上,到目前爲止,這個問題一直沒有被發現,只是偶然的,你可以再次掩蓋它。

所以最好的方法是解決這個問題。

相關問題