Autor Zpráva
Lorin
Profil *
Dobrý den.
Mám na localhostu nově nainstalovaný Apache2 s PHP5 a MySQL (tuším také verze 5). Localhost používám jako testovací prostředí pro scripty které následně nahraji na web. Zřejmě není něco správně nastaveno, protože pokud v některém souboru udělám nějakou chybu, nevypíše se mi chybová hláška, ale jen bílá stránka.

V konfiguračním souboru /etc/php5/apache2/php.ini mám nastaveno error_reporting = E_ALL | E_STRICT.

Zkusil jsem si tedy vše vypsat v php souboru:
<?php
    // 32767
    echo error_reporting() . "<br />";

     // 32767
    echo ini_get("error_reporting") . "<br />";

     // 1
    echo ini_get("display_errors") . "<br />";

     // 30719
    echo E_ALL . "<br />";

     // 2048
    echo E_STRICT . "<br />";

     // 32767
    echo E_ALL|E_STRICT;
?>

Pro jistotu jsem chybový script zkusil nahrát na server, kam dávám už odladěné scripty a chyby se zobrazily. Testovací soubor vypsal následující:
<?php
    // 6135
    echo error_reporting() . "<br />";

     // 6135
    echo ini_get("error_reporting") . "<br />";

     // 1
    echo ini_get("display_errors") . "<br />";

     // 6143 
    echo E_ALL . "<br />";
    
     // 2048
    echo E_STRICT . "<br />";
    
     // 8191
    echo E_ALL|E_STRICT;
?>

Jak je možné, že se liší hodnota v E_ALL na localhostu (30719) a serveru (6143)?
YoSarin
Profil
Podívej se na http://php.net/manual/en/errorfunc.constants.php - hodnota v E_ALL závisí na konkrétní verzi PHP:
32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously
Lorin
Profil *
Takže chyba se zobrazováním chybových hlášek (chyba je v includování absolutní cesty) není zapříčiněna rozdílem hodnoty v E_ALL. Čím by to tedy mohlo být?
YoSarin
Profil
Lorin:
Zapíše to nějakou chybu do logu? A pokud ano je stejná jako ta co se zobrazuje na hostingu? Máš nějaký konkrétní příklad který to dělá?
Lorin
Profil *
V logu žádná chyba není.

Soubor o který šlo vypadal nějak podobně:
<?php
    define("SERVER_ADDRESS", "http://" . $_SERVER['SERVER_NAME']);
    define("DIRECTORY", dirname($_SERVER['SCRIPT_NAME']));

     include SERVER_ADDRESS . DIRECTORY . "/test.php";
?>
Vím že je to chybný postup, ale šlo mi o to otestovat vypisování chybových hlášek.
YoSarin
Profil
Lorin:
A má php dostatečná práva na zápis do logu? Třeba se pokouší chybu před výpisem zalogovat, to se mu nepodaří a spadne nějakým nezachytitelným fatalerrorem... co log apache?
Lorin
Profil *
Dodatečně jsem nastavil error_log na cestu k nějakému souboru a nastavil mu správná práva (zápis ostatními). Po restartu apache a znovu-načtení stránky se v logu nic neobjevilo. Stránka je prázdná i když zakážu logování chyb do souboru (log_errors = Off).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0