❶ 在php中檢查PHP文件是否有語法錯誤的方法
<?php
if(!function_exists('php_check_syntax')){
functionphp_check_syntax($file_name,&$error_message=null){
$file_content=file_get_contents($file_name);
$check_code="returntrue;?>";
$file_content=$check_code.$file_content."<?php";
if(!@eval($file_content)){
$error_message="file:".realpath($file_name)."havesyntaxerror";
returnfalse;
}
returntrue;
}
}
if(!php_check_syntax("file.php",$msg)){
echo$msg;
}
else{
echo"Woohoo,OK!";
}
file.php
❷ 如何查看php代碼語法錯誤
錯誤抑制符去掉錯誤信息,eval和echo一樣並不是函數,不能使用變數函數的方法調用比如:$func = 『eval』$func()這樣的調用就是無效的。它會提示沒有eval函數,如果你自己定義這么一個函數也是有問
錯誤抑制符去掉錯誤信息,eval和echo一樣並不是函數,不能使用變數函數的方法調用比如:
$func = 『eval』
$func()這樣的調用就是無效的。它會提示沒有eval函數,如果你自己定義這么一個函數也是有問題的。因為eval是一個關鍵字。
eval調用和include差不多,如果被包含文件中沒有明確return就返回null。如果直接eval我們需要檢查的文件會造成被檢查的文件內代碼被執行,這可不是我們想要的,我們只需要檢查一下這個文件的語法是否正確。 我們可以在要檢查的文件之前添加return 語句,讓代碼提前跳出,那麼後面的代碼就不會執行了。好的,就這么干。代碼如下:
< ?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!";
}
< ?PHP
foreach:: a => b
?>
因為Parse error 是沒法被 set_error_handler處理函數處理的。這個異常沒辦法catch到。所以才使用了@來抑制錯誤。這帶來的問題就是我們無法得到詳細的錯誤信息。 不過目前我需要的功能也只是檢查語法是否正確。不正確的話重新編譯模板文件,就這么簡單,至於語法錯誤,在顯示網頁的時候自然會看得到。
PHP檢查語法錯誤最好的辦法就是這個被遺棄的PHP_check_syntax這個方法回到PHP中。下次再研究下他們是出於什麼原因把這個函數去掉的。
❸ 訪問伺服器上的PHP文件出錯,如何看到具體錯誤信息
首先看下瀏覽器返回的狀態碼,404表示你的PHP項目中木有默認頁,500表示你的PHP項目中某個文件有硬性錯誤,接著呢,到php.ini中開啟下出錯開關,就可以發現是PHP函數或變數出錯還是mysql連接出錯了。。。,最好放截圖。
平常如果遇到問題,可以多去後盾人看一些相關的視頻,看不懂多看幾遍,總會有用的。
❹ 如何查看wamp中php編譯的錯誤
查看wamp目錄下的logs下的apache_error.log
❺ 伺服器上的php項目訪問不了,怎麼查看錯誤
首先看下瀏覽器返回的狀態碼,404表示你的PHP項目中木有默認頁,500表示你的PHP項目中某個文件有硬性錯誤,接著呢,到php.ini中開啟下出錯開關,就可以發現是PHP函數或變數出錯還是mysql連接出錯了。。。,最好放截圖。。。
❻ PHP編寫過程中如何檢測錯誤
一般 xx_query 函數執行的 sql 語句是 query 語句, insert, del, update這類使用 xx_exec()函數。函數一般都有返回值來表明是否成功,所以把函數返回值賦值給變數,然後判斷函數返回值,如果成功再進行成功的操作,否則執行失敗的操作。使用 var_mp($var) 列印返回值,即可查看函數的返回值
❼ 如何查看伺服器上的php錯誤日誌
切換到根目錄, 輸入 sudo find . -name error.log 就能返回php錯誤日誌的路徑.
❽ 如何查看php網站的錯誤信息和錯誤日誌
設定錯誤消息級別
error_reporting
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Proction Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
最好吧日誌打開
log_errors
; Default Value: Off
; Development Value: On
; Proction Value: On
❾ 如何查看php-fpm core mp 文件的錯誤
開啟php的coremp輸出,修改ulimit -c就可以了,但是很多情況下,會提示權利受限,無法修改
[[email protected]]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30678
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 32768
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
$ ulimit -c unlimited
-bash: ulimit: core file size: cannot modify limit: Operation not permitted
解決方案:
1.檢查配置
看看shell配置里有沒有 ulimit -c 0 這種類似的關閉的操作,例如
$HOME/.bash_profile 或者 $HOME/.bashrc 之類的,如果有,注釋掉。
#
# Do not proce core mps
#
# ulimit -c 0
2. 全局coremp開啟
使用root用戶,修改 /etc/security/limits.conf
# /etc/security/limits.conf
#
# Each line describes a limit for a user in the form:
#
# <domain> <type> <item> <value>
#
* soft core unlimited
3.退出並從新登錄shell,修改配置
ssh [email protected]
[[email protected]]$ ulimit
-c
0
先切換成root用戶進行設置
su -
ulimit -c unlimited
ulimit -c
unlimited
然後切換回自己的用戶進行設置
su - fukun
ulimit -c unlimited
ulimit -c
unlimited
以上3步有可能不是必須的,但是只要按這個步驟來,肯定能設置成功,在其它方法設置不成功的時候,按這個步驟來試試把。