導航:首頁 > 編程語言 > php錯誤抑制符

php錯誤抑制符

發布時間:2023-01-20 21:26:54

㈠ 在php中符號\b指的是什麼意思

你好:
@在php中叫錯誤抑制符,也就是用來屏蔽錯誤的。
@之後的表達式如果出錯誤,是不提示錯誤信息的,如果不加@出錯之後一般是會在瀏覽器中顯示錯誤信息,加上之後瀏覽器中就不顯示錯誤信息了。
你可以嘗試下,看看加與不加的區別。

㈡ PHP網站打開空白的常見解決方法有哪些

在php編程中出現空白頁面可能是由以下幾個原因造成的:
1、邏輯錯誤
邏輯錯誤是最難排除的,從表面上看,也許代碼是合法的,是正規的,可運行起來卻不是預料之中的。為什麼呢?也許是編寫者想得不夠全面,畢竟人是人,計算機是計算機,計算機不可能完全按照人的思路去運行腳本。在這里,我告訴大家一個比較好的調試方法,就是使用注釋符「/* */」,注釋掉一些代碼,觀察運行情況。要想完全排除邏輯錯誤,沒有耐心是不行的,所以要靜下心來,不要著急。
2、行為未定義
看下面的代碼:
<?php
$action = $_GET['id'];
if($action == '')
$action = 1;
if($action == 1) {
echo("/$action's value is 1");
} else if($action == 2) {
echo("/$action's value is 2");
}
?>
這段代碼大家看得很明白,就是如果$action變數為空時將它設為1,然後判斷$action變數的值而做出不同的事件。當然,假如$action既不等於1,也不等於2的時候,PHP會做什麼呢??——什麼也不會做,所以就會產生了空白的頁面。知道了原因,解決就容易了。關於這個問題的解決,很簡單,在 if模塊後加一個else就可以了,列印一些信息即可。
3、語法錯誤
大家可能會問了,如果出現語法錯誤,一般會有錯誤提示的,怎麼會空白呢?當然,這只是一些個別現象,在某些主頁空間中(比如中國聚網的免費空間),如果你寫得PHP有語法錯誤,它也不會有任何提示。解決也很容易,在上傳文件之前在本地測試,找出錯誤的代碼進行改正。(www.3lian.com)
4、濫用錯誤屏蔽符@
錯誤抑制符「@」常常用於可能會發生錯誤的地方,但是抑制符使用過多或使用得不是時候,也可能導致空白也免得出現,來看看下面兩個PHP腳本吧:
test1.php
<?php
@include("test2.php");
echo($var);
?>
test2.php
<?php
$var = "Hi" //這行代碼有錯誤,沒有分號
$var1 = "Hello" //同上
?>
運行test1看看,結果就產生了空白的頁面。糾正也很簡單,可以去掉include函數前面的抑制符,或者更正test2.php文件中的錯誤。

㈢ 如何屏蔽php錯誤

@屏蔽法 @在php中一個抑制錯誤的符號,即便是你開啟了報錯功能,只要在錯誤語句之前加上@符號,便可屏蔽了錯誤信息。使用@抑制錯誤之前,會出現一個警告錯誤。(如下圖所示)
使用後,警告錯誤便會消失,只會出現die函數中報錯信息

error_reporting屏蔽法 在php文件開始之前,我們可以加上這樣一句話error_reporting(0);這個函數的意思是設置 PHP 的報錯級別並返回當前級別,0則代表禁用錯誤報告.(此函數還有其他參數,如果想要詳細了解可以去搜索一下)

display_errors屏蔽法 這種方法應該是最徹底的一種解決辦法,因為前兩種方法只能作用於單行或者單個文件,這個則是作用於所有的php文件。打開php.ini文件,搜索display_errors = on,默認的應該是on,即開啟報錯功能,改為off即可

㈣ 如何有效的屏蔽掉PHP警告和錯誤提示

方法一、在有可能出錯的函數前加@,然後or die("")
如:
@mysql_connect(...) or die("Database Connect Error")
屏蔽PHP錯誤提示方法二、編輯php.ini ,查找"display_errors =" ,將「=」後面的值改為"off。
屏蔽PHP錯誤提示方法三、在php腳本前加error_reporting(0),屏蔽所有錯誤提示。
error_reporting
配置錯誤信息回報的等級。
語法: int error_reporting(int [level]);
返回值: 整數
函數種類: PHP 系統功能

屏蔽PHP錯誤提示函數內容說明
本函數用來配置錯誤信息回報的等級,參數 level 是一個整數的位遮罩 (bitmask),見下表。
遮罩值 表示名稱
E_ERROR
E_WARNING
E_PARSE
E_NOTICE
E_CORE_ERROR
E_CORE_WARNING
E_NOTICE 表示一般情形不記錄,只有程序有錯誤情形時才用到,例如企圖存取一個不存在的變數,或是呼叫 stat() 函數檢視不存在的文件。
E_WARNING 通常都會顯示出來,但不會中斷程序的執行。這對除錯很有效。例如:用有問題的正則表達式呼叫 ereg()。
E_ERROR 通常會顯示出來,亦會中斷程序執行。意即用這個遮罩無法追查到內存配置或其它的錯誤。
E_PARSE 從語法中解析錯誤。
E_CORE_ERROR 類似 E_ERROR,但不包括 PHP 核心造成的錯誤。
E_CORE_WARNING 類似 E_WARNING,但不包括 PHP 核心錯誤警告。
error_reporting( 7 ) = error_reporting( 1+2+4) = error_reporting(E_ERROR | E_WARING | E_PARSE)
以上就是屏蔽PHP錯誤提示的相關實現方法。

如何有效實現

㈤ 請問php中這<=@$username>什麼意思

@符號在php中是抑制錯誤提示用的。一般在可預知bug 的地方,加一個@符號來防止程序崩潰停止。比如unlink刪除文件,如果沒有找到要刪除的文件,系統會報錯,可以加一個@來防止程序停止。
不過一般用的很少,也盡量少用。
你給的這個程序 感覺上哈斯寫錯了,@前又有一個=號,有沒有寫echo,完全不知錯雲

㈥ 使用PHP程序檢查PHP文件是否有語法錯誤

在網上找了一下。剛開始以為 token_get_all()函數能處理語法錯誤的問題,結果發現,它只是做簡單的詞法分析。沒有辦法。後來到論壇上去問了一下
之前在當當的時候的一個項目中用到了一個簡單的模板引擎,其實也是借鑒discuz來做的模板引擎,很簡單,它所作的事情就是把一些自定義的標簽編譯成php代碼。已經說了很簡單了,所以編譯的時候也名優進行模板語法的檢查,那麼在開發過程中就會出現編譯出來的php文件有語法問題,有語法問題沒有關系,我修改重新編譯一下就好了。首先不能在每次請求的時候都把php模板重新編譯一下,會嚴重影響性能,折中的處理時在每個編譯好的php文件末尾檢查一下該模板文件是否已經修改過,根據設定的更新頻率,如果又需要則重新編譯模板文件,現在的問題是編譯出來的php文件自己有語法錯誤,根本執行不到模板檢查那一步,所以即使修改了模板文件中的問題也不會重新編譯。 所以我想尋找一種簡單的方法來檢查生成的php文件是否合法。不合法就重新編譯,這樣開發過程中就不用出現錯誤就得手動刪除緩存文件了。
在網上找了一下。剛開始以為 token_get_all()函數能處理語法錯誤的問題,結果發現,它只是做簡單的詞法分析。沒有辦法。後來到論壇上去問了一下
有人告訴我有這樣一個函數 php_check_syntax() 我想問題就這么堅決了。。我真應該rtf(read the fuck mannual). 仔細一看。這個函數已近被棄用了:
note: for technical reasons, this function is deprecated and removed from php. instead, use php -l somefile.php from the commandline.
這個technical reason 到底是什麼呢? 先不管了,以後再慢慢研究,反正不能使用這個方法就對了。
他們的建議是使用命令行$php -l filename.php 來檢查語法。
gary every給了我一個代碼片段參考:
在命令行下檢查問題也不大。如果我要放在在線應用呢? 這就涉及到可移植性的問題了。首先是操作系統,然後就是環境變數。這樣的話就會依賴於伺服器端的配置。在http://www.php.net/manual/en/function.php-check-syntax.php 上有人貼出了自己的php_check_syntax()函數實現。
有的採用的就是上面的命令行的方法。
後面有提到使用eval的方法來驗證。eval方法會執行傳入的代碼, 如果代碼有語法錯誤則會拋出parser error, 可以使用'@'錯誤抑制符去掉錯誤信息,eval和echo一樣並不是函數,不能使用變數函數的方法調用比如:
$func = 『eval'
$func()這樣的調用就是無效的。它會提示沒有eval函數,如果你自己定義這么一個函數也是有問題的。因為eval是一個關鍵字。
eval調用和include差不多,如果被包含文件中沒有明確return就返回null。如果直接eval我們需要檢查的文件會造成被檢查的文件內代碼被執行,這可不是我們想要的,我們只需要檢查一下這個文件的語法是否正確。 我們可以在要檢查的文件之前添加return 語句,讓代碼提前跳出,那麼後面的代碼就不會執行了。好的,就這么干。
checker.php
if(!function_exists('php_check_syntax')) {
function php_check_syntax($file_name, &$error_message = null) {
$file_content = file_get_contents($file_name);
$check_code = "return true; ?>";
$file_content = $check_code . $file_content . "<?php ";
if(!@eval($file_content)) {
$error_message = "file: " . realpath($file_name) . " have syntax error";
return false;
}
return true;
}
}
if(!php_check_syntax("file.php", $msg)) {
echo $msg;
}
else {
echo "woohoo, ok!";
}
file.php
<?php
foreach:: a => b
?>
因為parse error 是沒法被 set_error_handler處理函數處理的。這個異常沒辦法catch到。所以才使用了@來抑制錯誤。這帶來的問題就是我們無法得到詳細的錯誤信息。 不過目前我需要的功能也只是檢查語法是否正確。不正確的話重新編譯模板文件,就這么簡單,至於語法錯誤,在顯示網頁的時候自然會看得到。

閱讀全文

與php錯誤抑制符相關的資料

熱點內容
javatomcat圖片 瀏覽:415
程序員生產智能創意 瀏覽:65
匯和銀行app怎麼登錄 瀏覽:381
騰訊伺服器如何上傳源碼 瀏覽:739
單片機的原理概述 瀏覽:508
火控pdf 瀏覽:267
如何復制雲伺服器centos環境 瀏覽:984
債權pdf 瀏覽:301
紅色番字的app怎麼下載 瀏覽:876
雲伺服器流程教課 瀏覽:702
中國農業銀行app怎麼沒有網 瀏覽:997
幾率表演算法 瀏覽:902
程序員理工科 瀏覽:708
企業郵箱登錄收件伺服器地址 瀏覽:558
計算機思維與演算法設計的重要性 瀏覽:664
linux刷新磁碟命令 瀏覽:76
我的世界如何查看伺服器種子pc 瀏覽:284
linuxlamp編譯安裝 瀏覽:609
枚舉演算法ppt 瀏覽:184
cmd查看進程命令 瀏覽:956