① 如何開啟php日誌功能
開啟步驟如下:
1. 打開php.ini文件。
以ubuntu為例,這個文件在: /etc/php5/apache2 目錄下為例。
2. 搜索並修改下行,把Off值改成On
display_errors = Off
3. 搜索下行
error_reporting = E_ALL & ~E_NOTICE
或者搜索:
error_reporting = E_ALL & ~E_DEPRECATED
修改為
error_reporting = E_ALL | E_STRICT
4. 修改Apache的 httpd.conf,
以Ubuntu 為例, 這個文件在:/etc/apache2/ 目錄下,這是一個空白文件。
添加以下兩行:
php_flag display_errors on
php_value error_reporting 2039
5. 重啟Apache,就OK了。
重啟命令: :sudo /etc/init.d/apache2 restart.
② PHP錯誤日誌的時間與系統時間不一致,怎麼解決
你修正只是php這樣級別的時區,所以網頁顯示出來的時間跟你瀏覽器所在電腦時間是一致的(修正好了)。
但錯誤日誌的運行一般是apache或者php-cgi,它們是直接調用操作系統的時間和時區的,所以寫出來的日誌時間有時差。依照你的描述,估計你用的是linux,試一下修正一下linux的時區一下就可以了。命令如下:
rm-f/etc/localtime
ln-s/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
③ php如何輸出500等伺服器內部錯誤信息到頁面。
500錯誤一般是許可權問題。
國內的虛擬主機一般不支持ini_set, .htaccess。可以考慮合租伺服器。
php 配置 (通過修改你的php管理軟體進行配置):
-php里可以用ini_set來更改php設置
允許URL重寫
-apache需要有mod_rewrite, 空間需要支持.htaccess
全局性PHP的注冊選項關閉(推薦)
-也是PHP的設置,regist_global=off
.htaccess的編寫可以在網上搜索一下,類似的例子很多的。
④ php能不能像java那樣列印錯誤堆棧信息到錯誤日誌
PHP 確實不會輸出錯誤堆棧,但通過函數,還是能夠獲取到錯誤堆棧的。
function getBacktrace() {
ob_start();
debug_print_backtrace();
return ob_get_clean();
}
調用上面這個函數取得錯誤堆棧,再用 file_put_contents('log_path', FILE_APPEND); 寫入日誌文件即可。
還有一個辦法:為 PHP 安裝 xdebug 擴展
windows 下的安裝方法 安裝好後,修改 php.ini
⑤ php+nginx如何在瀏覽器輸出錯誤日誌
要想讓php-fpm顯示錯誤日誌,首先需要配置php-fpm。
在php-fpm的配置文件中(一般位於php安裝目錄下的etc/php-fpm.conf)配置php錯誤日誌的文件路徑。
1
2
3
4
5
6
; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /home/wangwei/php/var
; Default Value: log/php-fpm.log
;error_log = log/php-fpm.log
如上是我的php-fpm.conf文件中配置錯誤日誌的地方。把error_log = log/php-fpm.log之前的;去掉,然後修改為:
1
2
3
4
5
6
; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /home/wangwei/php/var
; Default Value: log/php-fpm.log
error_log = /home/work/log/php-fpm.log.wf
修改之後,保存配置,然後重啟php-fpm就可以啦。
注意如果用相對路徑的話,的路徑的前綴是基於php安裝目錄的var目錄的。
⑥ linux php錯誤日誌在哪
由於nginx僅是一個web伺服器,因此nginx的access日誌只有對訪問頁面的記錄,不會有php 的 error log信息。
nginx把對php的請求發給php-fpm fastcgi進程來處理,默認的php-fpm只會輸出php-fpm的錯誤信息,在php-fpm的errors log里也看不到php的errorlog
原因:
php-fpm的配置文件php-fpm.conf中默認是關閉worker進程的錯誤輸出,直接把他們重定向到/dev/null,所以我們在nginx的error log 和php-fpm的errorlog都看不到php的錯誤日誌。
解決nginx下php-fpm不記錄php錯誤日誌的辦法:
1.修改php-fpm.conf中配置 沒有則增加
2.修改php.ini中配置,沒有則增加
3.重啟php-fpm
⑦ 怎麼讓php列印錯誤日誌
(1)使用echo ,簡單輸出
(2)使用print_r(),可以有規則的列印復雜結構
(3)var_mp遞歸輸出某種結構體
(4)print(),簡單列印
可以將你要輸出的錯誤內容放到上述語句或函數內進行列印輸出;也可以寫入某個文件,作為你的Log日誌:file_put_contents('/test1.txt',$value['value'],FILE_APPEND)等這類文件函數
以上是我自己工作中總結的PHP調試方法,挺好用的。
⑧ 怎麼讓php列印錯誤日誌
要捕獲錯誤的話,一般都要自己封裝一下
代碼示例:
<?php
//error handler function
function customError($errno, $errstr, $errfile, $errline)
{
echo "<b>Custom error:</b> [$errno] $errstr<br />";
echo " Error on line $errline in $errfile<br />";
echo "Ending Script";
die();
}
//set error handler
set_error_handler("customError");
$test=2;
//trigger error
if ($test>1)
{
trigger_error("A custom error has been triggered");
}
?>
輸出:
Custom error: [1024] A custom error has been triggered
Error on line 19 in C:\webfolder\test.php
Ending Script
具體參考:http://www.w3school.com.cn/php/func_error_set_error_handler.asp
⑨ LNMP模式下如何開啟PHP錯誤日誌
500錯誤首先就需要先開啟php錯誤日誌,通過php錯誤日誌來排錯。
LNMP下的錯誤需要編輯 /usr/local/php/etc/php-fpm.conf 加上
php_admin_value[error_log] = /usr/local/php/var/log/php_errors.log
php_admin_flag[log_errors] = on
或在/usr/local/php/etc/php-fpm.conf里設置,加上catch_workers_output
= yes,錯誤信息就會記錄到php-fpm.conf里error_log設置的文件里。 上述兩種方法都行,重啟php-fpm生效
同理php.ini里的display_errors也是需要在php-fpm.conf里設置的,加上php_flag[display_errors]
= On就開啟了。 有時可能錯誤日誌文件不自動創建,可以執行:touch
/usr/local/php/var/log/php_errors.log
⑩ 如何查看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