lumen ”Cannot declare class Event“ 錯誤解決方法

在安裝php event擴展的服務器上運行lumen框架是會報錯:

[ErrorException]
  Cannot declare class Event, because the name is already in use


詳細錯誤信息如下圖所示:

在這裏插入圖片描述

[2020-06-28 17:32:06] local.ERROR: ErrorException: Cannot declare class Event, because the name is already in use in /alidata/www/yunliao_lumen_pre/vendor/laravel/lumen-framework/src/Application.php:729
Stack trace:
#0 [internal function]: Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}(2, 'Cannot declare ...', '/alidata/www/yu...', 729, Array)
#1 /alidata/www/yunliao_lumen_pre/vendor/laravel/lumen-framework/src/Application.php(729): class_alias('Illuminate\\Supp...', 'Event')
#2 /alidata/www/yunliao_lumen_pre/vendor/laravel/lumen-framework/src/Application.php(696): Laravel\Lumen\Application->withAliases(Array)
#3 /alidata/www/yunliao_lumen_pre/bootstrap/app.php(26): Laravel\Lumen\Application->withFacades()
#4 /alidata/www/yunliao_lumen_pre/public/index.php(15): require('/alidata/www/yu...')
#5 {main} {"exception":"[object] (ErrorException(code: 0): Cannot declare class Event, because the name is already in use at /alidata/www/yunliao_lumen_pre/vendor/laravel/lumen-framework/src/Application.php:729)
[stacktrace]
#0 [internal function]: Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}(2, 'Cannot declare ...', '/alidata/www/yu...', 729, Array)
#1 /alidata/www/yunliao_lumen_pre/vendor/laravel/lumen-framework/src/Application.php(729): class_alias('Illuminate\\\\Supp...', 'Event')
#2 /alidata/www/yunliao_lumen_pre/vendor/laravel/lumen-framework/src/Application.php(696): Laravel\\Lumen\\Application->withAliases(Array)
#3 /alidata/www/yunliao_lumen_pre/bootstrap/app.php(26): Laravel\\Lumen\\Application->withFacades()
#4 /alidata/www/yunliao_lumen_pre/public/index.php(15): require('/alidata/www/yu...')
#5 {main}
"} 

錯誤原因:


在lumen框架中文件 vendor/laravel/lumen-framework/src/Application.php 749行 withAliases(),這裏爲 \Illuminate\Support\Facades\Event 定義了別名’Event’。導致與php event擴展的類名衝突

\Illuminate\Support\Facades\Event::class => 'Event',

解決方法


bootstrap/app.php 中添加以下代碼:

$app->withFacades(true, [
    \Illuminate\Support\Facades\Event::class => 'LumenEvent',
]);

注意在這個文件中只能添加一次 $app->withFacades() 要引用的多個放到後面數組中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章