亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php.ini 中的 display_errors = off 仍然呈現錯誤以顯示

php.ini 中的 display_errors = off 仍然呈現錯誤以顯示

PHP
斯蒂芬大帝 2021-09-18 16:14:41
當我將“display_errors = off”添加到我的 php.ini 文件時,我仍然會顯示一些 php 錯誤。在將 display_errors = off 添加到我的 php.ini 文件之前,我得到了完整路徑等顯示(很多信息。不打算被用戶看到)。將 display_errors = off 放入我的 php.ini 文件后,我得到的錯誤信息要少得多。顯示,但我仍然收到以下錯誤:“對不起,有一個錯誤:用戶 'username'@'localhost' 對數據庫 'mydatabase' 的訪問被拒絕。“對不起,有一個錯誤”是我的自定義 connect_error 模具文本,這就是我想要顯示的全部內容。但是呈現我想避免的用戶名和數據庫。還有什么我需要添加到我的 php.ini 文件中,或者這可能是使用 connect_error 和死在我的 php 代碼中?我的 LAMP 網站主機不允許我訪問 .htaccess 和其他一些配置文件。但我有自己的 php。一旦我讓 display_error 以我想要的方式工作,我想將 log_errors & error_log 添加到我的 php.ini 文件中,以便我可以記錄 php 錯誤以進行調試。這是我在 php.ini 中的一行:display_errors = off這是我的 php 文件中的檢查連接代碼(以防萬一):if ($con->connect_error) {die("Sorry, there was an error: " . $con->connect_error);}我希望我的 php.ini 中的 display_errors = off 在執行期間給我一個空白屏幕,或者只顯示“對不起,有一個錯誤”,這將是我的偏好。任何意見建議表示贊賞。謝謝你。更新:閱讀我收到的原始帖子的評論后,我嘗試修改一些代碼并添加一些代碼。我在建立 mysql db 連接之前添加了以下代碼行,以便在我的 php 錯誤日志中報告 mysql 錯誤:mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);然后我將以下幾行添加到我的 php.ini 中,這樣所有錯誤都不會顯示,而是寫入 php 錯誤日志:error_reporting = E_ALLdisplay_errors = offlog_errors = onerror_log = ../logs/my_php_error_log我完全注釋掉了我的“$con->connect_error”代碼(如下),因為所有 mysql/php 錯誤現在都被記錄到一個文件中,我經常檢查。注意:如果不檢查連接不是好的做法,請告訴我:/*if ($con->connect_error) {die("Sorry, there was an error.");}*/我所做的所有上述更改都是基于我從對原始帖子的評論中學到的知識,以及我在評論者提供的鏈接中閱讀的更深入的信息。謝謝你。
查看完整描述

2 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

如果您不想呈現用戶名和數據庫,您只需$con->connect_error從自定義消息中刪除。


if ($con->connect_error) {

    die("Sorry, there was an error.");

}


查看完整回答
反對 回復 2021-09-18
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

您的代碼的邏輯規定,無論 ini 設置如何,它都應該顯示錯誤消息。用錯誤消息死在你的代碼中從來都不是一個好主意。PHP 具有非常好的錯誤報告和邏輯功能,您不需要自己死掉或顯示它們。


首先,如果您使用 MySQLi,那么您應該在代碼中啟用異常模式:


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

不要發現您的錯誤,也不要自己顯示它們。如果切換到配置并打開display_errors=On錯誤報告,您將在瀏覽器中看到錯誤。


如果你真的想顯示你自己的錯誤信息,你應該使用exceptions。


if ($con->connect_error) {

    throw new \Exception("Sorry, there was an error: " . $con->connect_error);

}


您也可以使用trigger_error手動觸發 PHP 錯誤。


if ($con->connect_error) {

    throw new \Exception("Sorry, there was an error: " . $con->connect_error, E_USER_ERROR);

}

最糟糕的選擇是die。如果必須,die則可以先檢查錯誤顯示是否已打開。


if ($con->connect_error) {

    if(ini_get('display_errors')){

        die("Sorry, there was an error: " . $con->connect_error);

    }

}


查看完整回答
反對 回復 2021-09-18
  • 2 回答
  • 0 關注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號