Autor Zpráva
Shaim
Profil
Zdravím,

mám na hostingu celkem složité php scripty, bohužel nemám přístup k error_logu, abych zjistil, kde nastal problém.
Nastavil jsem si v .htaccess:
ErrorDocument 500 /500.php

Kam se přesměruje script po chybě. Nicméně, jak mohu zjistit, co to přesměrování způsobilo? I když se "dostanu" na 500.php, tak nevím, jak zjistit příčinu.

Našel jsem spoustu diskuzí na toto téma, ale nepodařilo se mi dohledat žádné řešení. Nemyslím konkrétní řešení, ale spíš pošoupnutí, jak zjistit, co se mohlo pokazit i bez error_logu.

Děkuji.
Rfilip
Profil
Chyba nastava na jedne strance nebo na vsech?
Tori
Profil
Shaim:
Můžete si v .htaccess nastavit jiný (přístupný) soubor jako chybový log? http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-log
Shaim
Profil
Rfilip: nastává na jedné stránce. Je to problém někde ve scriptu, ale nevím kde... Má okolo 2500 řádků a bez nějaké chybové hlášky nemám šanci to lokalizovat.

Tori: Nemohu právě... :)
Tori
Profil
Shaim:
Máte na locale stejnou verzi PHP jako na serveru?
Pokud je na ostrém serveru použitý některý akcelerátor PHP, zkuste ho vypnout a spustit skript. (v eAcceleratoru je bug, který za určitých okolností kazí kód. APC jsem netestovala.)

edit: Jinak - pokud vám to na localhostu funguje a na serveru selže, a na obou je stejná verze PHP, tak předpokládám, že nepůjde o E_ERROR ani E_PARSE, ale nižší stupeň chyby. Tzn. možná by se dalo použít set_error_handler nebo register_shutdown_function a zkusit zjistit chybu tam. Možná to může být i nezachycená výjimka - set_exception_handler.

Ještě je primitivní způsob, jak chybu lokalizovat: každých cca 30-50 řádků přidat zápis do nějakého souboru s číslem aktuálního řádku. Pak kouknout, který zápis byl poslední a zopakovat totéž v těch chybných n řádcích, ale zapisovat třeba po každém příkazu.
aDAm
Profil
změnit hosting? tam kde není k dispozici obyč error log je to hodně zlé, buď je k dispozici přes FTP/SFTP apod a nebo v ovládacím panelu.
Rfilip
Profil
Co zkusit přidat následující soubor:
<?php 
 error_reporting(-1); 
 ini_set("display_errors", 1); 
 include("chybny_soubor.php"); // zde dat jméno chybujíciho souboru
?> 
A ten zavolat.
Toto téma je uzamčeno. Odpověď nelze zaslat.