為什么在生產模式下從Config/Boot/production.php CI_DEBUG 設定為false時出現此錯誤?這是 CI4 的默認設定。
定義('CI_DEBUG') || 定義('CI_DEBUG',假);
Fatal error: Declaration of CodeIgniter\Log\Logger::emergency($message, array $context = []): bool must be compatible with Psr\Log\LoggerInterface::emergency(Stringable|string $message, array $context = []): void in E:\testing\Source Code\testing_CI_v.4.2.6\system\Log\Logger.php on line 157
Fatal error: Uncaught Error: Class "CodeIgniter\Log\Logger" not found in E:\testing\Source Code\testing_CI_v.4.2.6\system\Config\Services.php:391 Stack trace: #0 E:\testing\Source Code\testing_CI_v.4.2.6\system\Config\BaseService.php(253): CodeIgniter\Config\Services::logger(false) #1 E:\testing\Source Code\testing_CI_v.4.2.6\system\Config\BaseService.php(194): CodeIgniter\Config\BaseService::__callStatic('logger', Array) #2 E:\testing\Source Code\testing_CI_v.4.2.6\system\Config\Services.php(388): CodeIgniter\Config\BaseService::getSharedInstance('logger') #3 E:\testing\Source Code\testing_CI_v.4.2.6\system\Config\BaseService.php(253): CodeIgniter\Config\Services::logger(true) #4 E:\testing\Source Code\testing_CI_v.4.2.6\system\Common.php(799): CodeIgniter\Config\BaseService::__callStatic('logger', Array) #5 E:\testing\Source Code\testing_CI_v.4.2.6\system\Debug\Exceptions.php(114): log_message('critical', '{message}\nin {e...', Array) #6 E:\testing\Source Code\testing_CI_v.4.2.6\system\Debug\Exceptions.php(180): CodeIgniter\Debug\Exceptions->exceptionHandler(Object(ErrorException)) #7 [internal function]: CodeIgniter\Debug\Exceptions->shutdownHandler() #8 {main} thrown in E:\testing\Source Code\testing_CI_v.4.2.6\system\Config\Services.php on line 391
對于開發和測驗模式運行沒有問題。此錯誤僅在使用 routes->resource (RESTFUL API) 時發生。
目前尚不清楚這是什么錯誤。我嘗試用新的替換系統檔案夾。但是錯誤仍然存??在。
據說“未捕獲的錯誤:找不到類“CodeIgniter\Log\Logger””我不知道這是什么問題以及為什么找不到。
現在我的應用程式只需將 CI_DEBUG 設定為 true以防止錯誤運行。但默認設定為false 用于生產。
定義('CI_DEBUG') || 定義('CI_DEBUG',真);
這里缺少什么?奇怪的是,將 CI_ENVIRONMENT 設定為開發或測驗作業沒有問題。但是對于生產不起作用。所以我決定在生產模式下打開錯誤顯示,發現上面的錯誤。
認真幫助需要。
uj5u.com熱心網友回復:
我在restful api中發現了問題。
問題出在 config/filter.php
$routes->resource('ApiManageTips', ['controller' =>'App\Controllers\ApiData\ApiManageTips']); // get, put, create, delete
public $filters = [
'basicauth' => ['before' =>
[
'ApiManageTips/*',
'ApiManageTips',
]
]
];
上面的示例在 4.1.2 版本中作業,但在 4.2.6 版本中不作業
改為:
public $filters = [
'basicauth' => ['before' =>
[
'ApiManageTips/*',
]
];
我不知道為什么它在 CI 版本 4.2.6 中不起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/514625.html
