首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP exit() 與 die() 差異深度解析:參數型別與輸出行為

     編輯:PHP 相關知識

die() 是 exit() 的別名,功能完全相同,但慣例上語意不同。關鍵在於參數為整數時不輸出到頁面,僅作為結束狀態碼;字串才會輸出。

核心行為對照表

呼叫方式CLI 模式Web (SAPI) 模式說明
exit(0) / die(0)結束碼 0,無輸出腳本結束,無輸出成功結束慣例
exit(123)結束碼 123,無輸出腳本結束,頁面空白整數視為狀態碼
exit('123')輸出 "123" 到 stdout頁面顯示 "123"字串會輸出
die('error')輸出 "error" 到 stderr頁面顯示 "error"慣用於錯誤訊息

為何 die(123) 網頁不顯示 123?

PHP 內核判斷參數型別:

  • 整數 → zend_exit() 只設定 EG(exit_status),不經過輸出緩衝區。
  • 字串 → 先 php_write() 輸出字串,再結束。
<?php
// 錯誤示範:頁面空白
die(123);

// 正確:輸出字串
die('123');
// 或
echo '123'; die();
?>

最佳實踐慣例

  • CLI 腳本:用 exit($code),$code 為 0=成功、非 0=失敗代碼,方便 Shell 判斷 $?。
  • Web 請求:用 die('訊息') 或 exit('訊息') 顯示錯誤;正常結束直接 return 或讓腳本自然結束。
  • 重導向前:header('Location: ...'); exit;(不帶參數)。

補充:exit 後的 register_shutdown_function 仍會執行

<?php
register_shutdown_function(fn() => error_log('shutdown'));
exit('stop'); // 仍會寫入 log
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved