第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP的死亡白屏

PHP的死亡白屏

PHP
躍然一笑 2019-05-21 16:10:15
PHP的死亡白屏現(xiàn)在我開始回到PHP,我開始記得為什么我放棄了它。目前我盤子里最煩人的事情就是我所說的“PHP的死亡白屏”。當(dāng)PHP由于語法或其他原因而出現(xiàn)致命錯誤時,似乎總是在沒有實際向瀏覽器發(fā)送任何內(nèi)容的情況下死亡。我已將以下內(nèi)容添加到我的中.htaccess,并且它似乎在大多數(shù)時間都有效,但在這些情況下它不起作用。php_value display_errors 1php_value display_startup_errors 1php_value error_reporting 2147483647 # E_ALL我錯過了什么嗎?目前我覺得我需要刷新我編寫的每幾行代碼,以免我犯了一個錯誤,并且必須搜索許多頁面,試圖找出我犯的一個小錯誤......編輯:例如,給出以下兩行代碼:$foo = array(':language' => $languageId;$foo = array(':language' => $languageId);第一個將顯示死亡的白色屏幕(即,什么都沒有打印到瀏覽器),而第二個將愉快地執(zhí)行。
查看完整描述

5 回答

?
猛跑小豬

TA貢獻1858條經(jīng)驗 獲得超8個贊

以下代碼應(yīng)顯示所有錯誤:


<?php


// ----------------------------------------------------------------------------------------------------

// - Display Errors

// ----------------------------------------------------------------------------------------------------

ini_set('display_errors', 'On');

ini_set('html_errors', 0);


// ----------------------------------------------------------------------------------------------------

// - Error Reporting

// ----------------------------------------------------------------------------------------------------

error_reporting(-1);


// ----------------------------------------------------------------------------------------------------

// - Shutdown Handler

// ----------------------------------------------------------------------------------------------------

function ShutdownHandler()

{

    if(@is_array($error = @error_get_last()))

    {

        return(@call_user_func_array('ErrorHandler', $error));

    };


    return(TRUE);

};


register_shutdown_function('ShutdownHandler');


// ----------------------------------------------------------------------------------------------------

// - Error Handler

// ----------------------------------------------------------------------------------------------------

function ErrorHandler($type, $message, $file, $line)

{

    $_ERRORS = Array(

        0x0001 => 'E_ERROR',

        0x0002 => 'E_WARNING',

        0x0004 => 'E_PARSE',

        0x0008 => 'E_NOTICE',

        0x0010 => 'E_CORE_ERROR',

        0x0020 => 'E_CORE_WARNING',

        0x0040 => 'E_COMPILE_ERROR',

        0x0080 => 'E_COMPILE_WARNING',

        0x0100 => 'E_USER_ERROR',

        0x0200 => 'E_USER_WARNING',

        0x0400 => 'E_USER_NOTICE',

        0x0800 => 'E_STRICT',

        0x1000 => 'E_RECOVERABLE_ERROR',

        0x2000 => 'E_DEPRECATED',

        0x4000 => 'E_USER_DEPRECATED'

    );


    if(!@is_string($name = @array_search($type, @array_flip($_ERRORS))))

    {

        $name = 'E_UNKNOWN';

    };


    return(print(@sprintf("%s Error in file \xBB%s\xAB at line %d: %s\n", $name, @basename($file), $line, $message)));

};


$old_error_handler = set_error_handler("ErrorHandler");


// other php code


?>

使用此代碼生成空白頁的唯一方法是在關(guān)閉處理程序中出現(xiàn)錯誤。我在沒有測試的情況下從我自己的cms復(fù)制并粘貼了它,但我確信它有效。


查看完整回答
反對 回復(fù) 2019-05-21
?
慕標(biāo)5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

我總是在php腳本的頂部使用這種語法。


ini_set('error_reporting', E_ALL);

ini_set('display_errors', 'On');  //On or Off


查看完整回答
反對 回復(fù) 2019-05-21
?
Qyouu

TA貢獻1786條經(jīng)驗 獲得超11個贊

可以注冊一個鉤子以使最后一個錯誤或警告可見。


function shutdown(){

  var_dump(error_get_last());

}


register_shutdown_function('shutdown');

將此代碼添加到index.php的開頭將幫助您調(diào)試問題。


查看完整回答
反對 回復(fù) 2019-05-21
?
小怪獸愛吃肉

TA貢獻1852條經(jīng)驗 獲得超1個贊

這是加載與運行時配置的問題

重要的是要認(rèn)識到在編譯解析步驟期間發(fā)生語法錯誤或解析錯誤,這意味著PHP將在它甚至有機會執(zhí)行您的任何代碼之前保釋。因此,如果您display_errors在運行時修改PHP的配置(這包括從使用ini_set代碼到使用.htaccess,這是運行時配置文件),那么只有默認(rèn)加載的配置設(shè)置正在運行。

如何始終避免開發(fā)中的WSOD

要避免使用WSOD,您需要確保已加載的配置文件display_errors打開并error_reporting設(shè)置為-1這是等效的E_ALL,因為它確保所有位都打開,無論您運行的是哪個版本的PHP)。不要硬編碼E_ALL的常量值,因為該值可能會在不同版本的PHP之間發(fā)生變化。

加載的配置是您加載的php.ini文件或您的apache.confhttpd.conf或虛擬主機文件。這些文件只在啟動階段(例如,當(dāng)您第一次啟動apache httpd或php-fpm時)讀取一次,并且僅被運行時配置更改覆蓋。確保display_errors = 1error_reporting = -1您加載的配置文件可以確保你永遠(yuǎn)不會看到一個WSOD不管語法或解析像一個運行時的變化之前出現(xiàn)的錯誤ini_set('display_errors', 1);error_reporting(E_ALL);可能發(fā)生。

如何找到你的(php.ini)加載的配置文件

要找到已加載的配置文件,只需使用以下代碼創(chuàng)建一個新的PHP文件...

<?php
phpinfo();

然后將瀏覽器指向那里并查看解析的已加載配置文件其他.ini文件,這些文件通常位于您的頂部,phpinfo()并將包含所有已加載配置文件的絕對路徑。

如果您看到(none)而不是文件,這意味著您在配置文件(php.ini)路徑中沒有php.ini。所以你可以從這里下載與PHP捆綁的股票php.ini并將其作為php.ini復(fù)制到你的配置文件路徑,然后確保你的php用戶有足夠的權(quán)限從該文件中讀取。您需要重新啟動httpd或php-fpm才能加載它。請記住,這是與PHP源捆綁在一起的開發(fā) php.ini文件。所以請不要在生產(chǎn)中使用它!


只是不要在生產(chǎn)中這樣做

這確實是避免開發(fā)WSOD的最佳方法。任何人建議您放置ini_set('display_errors', 1);error_reporting(E_ALL);放在PHP腳本的頂部或使用.htaccess,就像您在此處所做的那樣,如果加載的配置文件出現(xiàn)語法或解析錯誤(如此處的情況),則無法幫助您避免WSOD已經(jīng)display_errors關(guān)閉了。

許多人(以及PHP的庫存安裝)將使用display_errors默認(rèn)關(guān)閉的production-ini文件,這通常會導(dǎo)致您在此遇到的同樣挫折。因為PHP在啟動時已經(jīng)關(guān)閉了它,然后遇到語法或解析錯誤,并且沒有任何輸出就會失敗。您希望ini_set('display_errors',1);PHP腳本的頂部應(yīng)該避免這種情況,但是如果PHP無法解析您的代碼也無關(guān)緊要,因為它永遠(yuǎn)不會到達(dá)運行時。


查看完整回答
反對 回復(fù) 2019-05-21
?
滄海一幻覺

TA貢獻1824條經(jīng)驗 獲得超5個贊

錯誤和警告通常出現(xiàn)在....\logs\php_error.log....\logs\apache_error.log取決于您的php.ini設(shè)置。

有用的錯誤通常也會定向到瀏覽器,但由于它們不是有效的html,因此不會顯示。

所以"tail -f“你的日志文件和當(dāng)你得到一個空白的屏幕使用IE瀏覽器” - >“源”菜單選項來查看原始輸出。


查看完整回答
反對 回復(fù) 2019-05-21
  • 5 回答
  • 0 關(guān)注
  • 999 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號