php打開報錯信息,php常見問題

本文目錄一覽:

php打開出錯了,都弄了好幾天了,怎麼辦啊

明顯是你的路徑錯了。。我覺得你應該不會建兩層www/www/這樣的目錄結構。

你用的tp,Think.class.php是其核心入口,你只要找到配置文件中,把你的配置路徑寫對 應該沒問題了。

php項目啟動出錯

你的根目錄不對,和你網站放的地方應該不是同一個地方。也就是說你php指定的根目錄和你源文件不在同一個文件夾。入門會遇到很多困難,加油啊,堅持就是勝利

PHP自定義門面以後顯示錯誤?

如果您是PHP老手,當然知道當PHP腳本出錯時發生了什麼事情。此時PHP解析器將在屏幕上給出錯誤信息,如 Fatal error: Call to undefined function on line 19 –,因此程序在此處終止。這個信息會嚇到客戶,他可能立即打電話和你進行諮詢。

幸運的是,這裡有解決辦法。PHP擁有內置工具,可以讓開發人員捕捉腳本錯誤然後將它們轉到自定義的錯誤處理器。此時則可以對處理器進行編程顯示更多關於錯誤的詳細信息。還可以將錯誤寫入文件或數據庫以採取補救措施。有時候還可以對處理器編寫程序忽略錯誤消息。

本文中,我將闡述如何使用PHP的錯誤處理API構建用戶自定義的錯誤處理器,並且說明如何以簡單而友好的方式顯示和管理腳本的錯誤信息。

錯誤類型和報告級別

我們從最基本的開始。PHP有三種最基本的錯誤類型,從低級到高級分別為:注意、警告和錯誤(或致命錯誤)。通常情況下,注意和警告不會終止程序;但是致命錯誤則是危險故障(例如,調用一個沒有定義的函數或參考一個不存在的對象),將導致程序中斷。這些錯誤有可能在啟動、解析、編譯或運行時發生。

關鍵字如E_NOTICE, E_ERROR等用於表明錯誤的不同類型和等級。在PHP手冊上可以獲得它們的詳細信息列表。

腳本階段錯誤顯示由error_reporting()函數進行控制。這一函數針對不同的錯誤等級設置不同的參數。表A給出了使用此函數報告警告和致命錯誤的腳本程序。

表A

?php

// display warnings and errors

error_reporting(E_WARNING | E_ERROR);

// this will generate a notice, which will never be displayed

echo $undefinedVar;

// this will generate a fatal error, which will be displayed

callUndefFunc();

?

將表B中的代碼與上面的進行比較發現,Listing B中隱藏錯誤信息甚至隱藏致命信息,使得錯誤信息不會被顯示出來。

表B

?php

// turn off error display

// no errors will be displayed

error_reporting(0);

// this will generate a notice

echo $undefinedVar;

// this will generate a fatal error

callUndefFunc();

?

表C中的代碼將所有錯誤信息甚至簡單的注意事項都顯示出來:

表C

?php

// all errors will be displayed

error_reporting(E_ALL);

// this will generate a notice

echo $undefinedVar;

// this will generate a fatal error

callUndefFunc();

?

如以上3個例子所示,error_reporting()函數在控制錯誤發生時,在屏幕上顯示內容非常重要。這裡的關鍵字是displayed,其表達的意思是錯誤不被顯示而不是錯誤沒有發生。因此,發生致命錯誤時(例如不正確的函數調用),程序將被終止;但是,此時沒有任何消息顯示給用戶。

下面的例子(表 D)說明了這種情況:

表D

?php

// no errors will be displayed

error_reporting(0);

// start a task

echo “Starting task…”;

// call an undefined function

// a fatal error occurs during task processing

callMe();

// end the task

echo “Successfully completed task…”;

?

在表D中,在調用echo()函數時發生了致命錯誤,程序執行時到這點被終止,但是卻沒有任何錯誤消息給出,用戶不知道這種情況還以為程序在正確運行。下面的結論是非常明顯的:不給出錯誤報告非常危險,因為不論過程是否完成它常導致不正確的結論。

注意:調用不帶任何參數的error_reporting()將返回當前的錯誤報告等級。

自定義錯誤處理器

很明顯,隱藏錯誤報告是不正確的,你肯定想知道有什麼其他辦法加以改進。自定義錯誤處理器就是一個很好的能取代PHP默認錯誤處理系統的解決方法。自定義錯誤處理器可以以任何方式設置處理錯誤信息,包括信息如何顯示。

PHP函數中,完成這一功能的是set_error_handler()函數。錯誤發生時,此函數被自動調用,然後給出4個參數:錯誤代碼、錯誤消息、發生錯誤的腳本名稱和錯誤出現的行,此函數對錯誤管理負責。

表E給出一個簡單例子:

表E

?php

// define custom handler

set_error_handler(‘myHandler’);

// custom handler code

function myHandler($code, $msg, $file, $line) {

echo “Just so you know, something went wrong at line $line of your script $file. The system says that the error code was $code, and the reason for the error was: $msg. Sorry about this!”;

}

// generate a notice

echo $undefVar;

?

當運行此腳本的時候,會出現下面的信息:

Just so you know, something went wrong at line 11 of your /dev/error1.php. The system says that the error code was 8, and the reason for the error was: Undefined variable: undefVar. Sorry about this!

此時,PHP的默認錯誤處理器被用戶定義的myHandler()函數所取代,$undefVar變量被激活,PHP通知未定義變量的信息,此信息在運行時引擎產生,然後傳遞給myHandler()函數,同時錯誤發生的地址也傳遞給此函數。然後myHandler()函數輸出友好信息解釋錯誤。

注意:錯誤和致命錯誤很重要,它們會繞過自定義錯誤處理器,然後以PHP默認的錯誤處理機制進行顯示。顯示這些信息可使用前面討論的標準error_reporting()函數進行控制。

例1:動態錯誤頁面和e-mail警報

表F給出了另一個範例,當發生錯誤時,將動態產生HTML錯誤頁面,並且通過e-mail向Web管理員進行報告。

表F

?php

// define custom handler

set_error_handler(‘myHandler’);

// custom handler code

function myHandler($code, $msg, $file, $line, $context) {

// print error page

echo “htmlhead/headbody”;

echo “h2 align=centerError!/h2”;

echo “font color=red size=+1”;

echo “An error occurred while processing your request. Please visit our a href=;home page/a and try again.”;

echo “/font”;

echo “/body/html”;

// email error to admin

$body = “$msg at $file ($line), timed at ” . date (“d-M-Y h:i:s”, mktime());

$body .= “nn” . print_r($context, TRUE);

mail (“webmaster@domain.dom”, “Web site error”, $body);

// halt execution of script

die();

}

// generate a notice

echo $undefVar;

?

這裡,自定義的錯誤處理器在遇到錯誤時動態產生HTML錯誤頁面。此錯誤信息也能被e-mail信息捕獲,然後通過PHP內置的mail()函數發送給管理員。

這裡出現了myHandler()函數的一個新參數$context。這是myHandler()函數的第五個參數,是可選項。它包含了當前變量狀態的快照。包括對管理員有用的上下文信息,有利於減少調試時間。

網站後台PHP正常,前台打開顯示服務器錯誤500是什麼原因?

1、檢查 apache的日誌文件,看裡面說什麼,日誌通常在/var/log/apache2 或者 /var/log/httpd下面;

2、在index.php打開調試開關,獲得更多調試信息,在php開始位置加入

error_reporting(E_ALL); ini_set(“display_errors”, 1);

3、檢查index.php的目錄下有沒有.htaccess文件,改名以後看看。

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.

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/219636.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 10:59
下一篇 2024-12-09 10:59

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python運行不報錯又無任何結果輸出可能產生的原因以及解決方法

    在Python編程過程中,有時候會出現程序運行不報錯但卻沒有任何結果輸出的情況。本文將從多個方面解析這個問題,並提供相應的解決方法。 一、語法錯誤 語法錯誤是Python程序中最常…

    編程 2025-04-29
  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • Python切片索引越界是否會報錯

    解答:當對一個字符串、列表、元組進行切片時,如果索引越界會返回空序列,不會報錯。 一、切片索引的概念 切片是指對序列進行操作,從其中一段截取一個新序列。序列可以是字符串、列表、元組…

    編程 2025-04-29
  • 如何解決Grid監控報錯prvg-1205

    Grid監控是Oracle RAC的重要組件,它可以幫助監視RAC集群的運行狀態和性能,對於集群管理非常關鍵。但是,如果在安裝過程中遇到報錯prvg-1205,將會導致安裝失敗,影…

    編程 2025-04-28
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28

發表回復

登錄後才能評論