我在 symfony 5.3.10 應用程式中有一個奇怪的問題,我無法解決它。
如果我觸發 500 錯誤,如下所示:
/**
* @Route("/", name="pvr_index", methods={"GET"})
*/
public function index(): Response
{
echo $a;
在哪里$a未定義,在開發環境中我得到一個很好的錯誤頁面。
我希望在 prod 中我會得到一個不太好的錯誤頁面,它只是告訴我我有一個 500 錯誤。這會正確地發生,直到前一段時間,當事情發生變化時,但我不知道是什么。
現在相反,我沒有收到任何錯誤,即使在 symfony 服務器控制臺中也沒有,并且腳本執行將繼續進行,就像什么都沒發生一樣。
我試過的:
在 try/catch 中添加假定的例外:
try {
echo $a;
}
catch (\Exception $e)
{
dump($e);
die();
}
什么都沒有發生,catch 沒有被觸發。
創建例外監聽器:
在services.yaml我有:
exception_listener:
class: App\Event\ExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception }
在ExceptionListener.php我有:
class ExceptionListener
{
public function __construct(Environment $engine) {
$this->engine = $engine;
}
public function onKernelException(ExceptionEvent $event)
{
dd($event->getThrowable()->getMessage());
}
}
仍然沒有任何反應,監聽器沒有被觸發。
一切都在開發環境中按預期作業,問題僅在產品中出現。
看一個phpinfo();頁面我看到啟用了報錯,所以我認為問題出在symfony配置上。
我正在使用 php 7.4 并且無法真正訪問 php.ini 檔案
uj5u.com熱心網友回復:
這不是 Symfony 錯誤(也不是 PHP 錯誤)。
在 PHP 7.4 上,試圖輸出一個未定義的變數只會引發一個通知,而不是一個致命錯誤(代碼 500)。除非您將服務器配置為記錄或輸出它們,否則通知會被引擎默默吞下,您會在其中得到類似的東西:
注意:未定義的變數:a 在檔案 xxx.php 行 Y
A try/catch不會為您做任何事情,因為不會拋出例外讓您 catch。
即使在 PHP 8 或 8.1 上,這也只會引發如下警告:
警告:未定義的變數 $a
您可以在此處查看版本 < 8 和 >= 8 下的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/425506.html
