我收到預期的通知和警告,並希望關閉我的PHP文件。錯誤是:關閉在php/mysql的警告和錯誤
Warning: fsockopen()
和注意事項有:
Notice: A non well formed numeric value encountered in
我計劃使用cron這個PHP腳本,不想取得任何記錄的所有錯誤或通知。
我收到預期的通知和警告,並希望關閉我的PHP文件。錯誤是:關閉在php/mysql的警告和錯誤
Warning: fsockopen()
和注意事項有:
Notice: A non well formed numeric value encountered in
我計劃使用cron這個PHP腳本,不想取得任何記錄的所有錯誤或通知。
當你確定你的腳本是完美的工作,你可以擺脫警告和通知是這樣的:將這個線在你的PHP腳本的開頭:
error_reporting(E_ERROR);
在此之前,在工作時,你的腳本,我會建議你正確調試你的腳本,以便所有的通知或警告消失一個接一個。 所以,你應該首先將其設置爲冗長儘可能與:
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
UPDATE:如何登錄,而不是顯示他們 正如意見提出錯誤,更好的方法是這樣只記錄錯誤到文件PHP開發人員看到錯誤消息,而不是用戶。 可能的實現方式是通過.htaccess文件,如果您無權訪問php.ini文件(source),則該文件很有用。
# supress php errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
# enable PHP error logging
php_flag log_errors on
php_value error_log /home/path/public_html/domain/PHP_errors.log
# prevent access to PHP error log
<Files PHP_errors.log>
Order allow,deny
Deny from all
Satisfy All
</Files>
不要這樣做。抑制所有錯誤是一個可怕的想法。 – ceejayoz 2009-10-29 18:41:56
你正在說話,好像背誦一個口頭禪。在這個特定的用例中,這正是用戶想要的。如果他想要一個測井系統,他會問這個問題。 – pixeline 2009-10-29 19:31:35
我同意ceejayoz和pixeline。但是,只應將生產環境中的error_reporting(0)設置爲安全措施,否則關鍵信息不會被錯誤地泄露給惡意用戶。使用error_reporting(0)'忽略錯誤'會帶來導致不好事情的高風險。我知道這是作者所要求的,但我會反對。 – 2009-10-29 19:53:25
您可以設置錯誤類型報告,你在php.ini或使用的error_reporting()函數在腳本的頂部需要。
使用'@'符號來預置函數來抑制某些錯誤,而不是關閉所有錯誤報告。
更多信息:http://php.net/manual/en/language.operators.errorcontrol.php
PHP支持一個錯誤控制運算符:at符號(@)。當在PHP中添加表達式時,可能會忽略可能由該表達式生成的任何錯誤消息。
@fsockopen();
這通常是一個更好的解決方案,用於生產代碼,恕我直言 – billrichards 2014-03-03 18:33:13
也許,「*也許*」,對於一個函數,然而用這個填充你的腳本稍後要求麻煩,因爲* something *不起作用,並且你的錯誤日誌是空的。最好的方法是設置一個箱子/開關,以便快速打開和關閉「顯示」錯誤。然後,他們關閉,dev/test可以開啓。無論哪種方式,(幾乎)總是建議記錄到錯誤日誌文件 – James 2014-11-12 20:12:40
始終顯示測試服務器上的錯誤。切勿在生產服務器上顯示錯誤。
編寫腳本以確定頁面是在本地,測試還是在線服務器上,並將$ state設置爲「local」,「testing」或「live」。然後:
if($state == "local" || $state == "testing")
{
ini_set("display_errors", "1");
error_reporting(E_ALL & ~E_NOTICE);
}
else
{
error_reporting(0);
}
如果你不能出於某種原因php.ini文件,禁用錯誤在標準輸出(display_errors
)。通過添加以下行的任何目錄htaccess文件:
php_flag display_errors off
此外,您可以將錯誤記錄添加到文件:
php_flag log_errors on
PHP的error_reporting參考:
// Turn off all error reporting
error_reporting(0);
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL^E_NOTICE);
// Report all PHP errors (see changelog)
error_reporting(E_ALL);
// Report all PHP errors
error_reporting(-1);
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
錯誤報告將被關閉,但其報告將被存儲在文件夾中的日誌文件中。如何停止PHP來創建日誌文件? tnx – 2015-10-05 05:48:14
@MehdiJ:停止在** error_log中記錄錯誤的PHP **添加此代碼'ini_set('log_errors','off');' – 2015-11-04 09:46:21
如果你不想錯誤通過電子郵件發送給你,你可以將它的輸出指向'/ dev/null'。儘管如此,錯誤通常是有原因的 - 你可能想知道你的cron腳本何時崩潰!嘗試優雅地處理錯誤。 – ceejayoz 2009-10-29 18:43:08
某處相關:http://stackoverflow.com/questions/4330494/preventing-warnings-from-fsockopen – trante 2012-09-07 13:57:55