Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konfiguracja ogólna - brak jakichkolwiek błędów..
Forum PHP.pl > Forum > PHP
Babcia@Stefa
Witam, piszę bardzo rozbudowany skrypt oparty o Jądro ( Kernel ) i moduły, jeden zgubiony "(", "}" lub ";" i strona robi się biała bez żadnego komunikatu - do tej pory radziłem sobie debugowaniem skryptu przy pomocy "echo" ale to nie jest najlepsze rozwiązanie bo za długo zajmuje znalezienie błędu.

PHP.ini mam domyślne dla systemu Arch Linux ponieważ to właśnie na desktopie mam aplikację, piszę i testuję ją właśnie na Swoim komputerze - jeszcze nie na serwerze.

http://wklej.org/id/380997/

Do kodu aplikacji dodałem error_reporting(E_ALL); ale nie pomogło.
Kod aplikacji jest tutaj: http://github.com/webnull/OpenWikiBlog jednak tutaj jest jeszcze nie zaaktualizowana wersja ( ostatni commit z rana )

PS. To na 99% wina konfiguracji globalnej, ponieważ miałem także konfigurację PHP z Gentoo i działa jak trzeba ale modułów nie ładowało PHP na tym konfigu u mnie ( w Gentoo z modułami jest inaczej - są wkompilowywane ).

-- WebNuLL
Asmox
Zanim obejrzę wnikliwie kod, chciałem Ci coś doradzić:
Miałem kiedyś identyczny problem. Kłopot tkwił w operatorze małpy @
Otóż jeżeli masz coś takiego:
  1. if(!@require_once('skrypt.php'))

To nie tylko nie będzie błędu jeżeli pliku nie ma, ale także nie będą się błędy pokazywać jeśli ten plik oraz jego załączenia mają coś nie tak
Spróbuj sobie przypomnieć, czy coś takiego stosowałeś, czasami naprawdę lepiej dać die, bo z wyjątkami to trzeba robić złożony system obsługi oraz dużo bloczków.
Pozdrawiam
Babcia@Stefa
Nigdzie "małp" nie stosuję raczej w includach ani require bo wiem o tym doskonale...

Problem leży po stronie konfiguracji bo miałem inny konfig i działało pokazywanie błędów, ale moduły nie działały smile.gif

-- WebNuLL
Asmox
Cytat
error_reporting: E_ERROR
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED

Daj w konfiguracji E_ALL, a nie w skrypcie
Babcia@Stefa
Odkryłem, że pod CLI jest wszystko okej, ale pod CGI już nie.

Pod CGI jest jakoś ustawione aby nie pokazywał błędów, muszę mieć pokazywanie błędów pod CGI ponieważ pod CLI niema GET, POST itp.

CLI:
Kod
[webnull@webnull-linux-laptop tuxplace-cube]$ php index.php
PHP Warning:  Missing argument 1 for libsmarty::FixParams(), called in /srv/http/tuxplace-cube/core/modules/smarty.so.php on line 24 and defined in /srv/http/tuxplace-cube/core/modules/smarty.so.php on line 51

Warning: Missing argument 1 for libsmarty::FixParams(), called in /srv/http/tuxplace-cube/core/modules/smarty.so.php on line 24 and defined in /srv/http/tuxplace-cube/core/modules/smarty.so.php on line 51
<html><head><title>OPS!</title></head><body><h2>We are sorry! Our application crashed unexpectly and report was sent to administrator.</h2>
<br/>
<br/><b>/srv/http/tuxplace-cube/core/modules/translator.so.php(43): translator.so.php::E_ERROR::init:: Cannot load default language, please check configuration</b><br/>
Stack trace: #0 /srv/http/tuxplace-cube/core/kernel.so.php(101): libtranslate->__construct('', Object(tuxKernel))
#1 /srv/http/tuxplace-cube/core/kernel.so.php(29): tuxKernel->modprobe('translator', '')
#2 /srv/http/tuxplace-cube/core/modules/hooks.so.php(16): tuxKernel->__get('alang')
#3 /srv/http/tuxplace-cube/core/kernel.so.php(101): libhooks->__construct(NULL, Object(tuxKernel))
#4 /srv/http/tuxplace-cube/index.php(40): tuxKernel->modprobe('hooks', NULL)
#5 {main}<br/><br/>

<br/>Dont worry, just try to go back in your web browser - we will repair this site soon.</body></html>PHP Warning:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /srv/http/tuxplace-cube/core/modules/exceptions.so.php on line 92

Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /srv/http/tuxplace-cube/core/modules/exceptions.so.php on line 92


CGI:
Kod
<html><head><title>OPS!</title></head><body><h2>We are sorry! Our application crashed unexpectly and report was sent to administrator.</h2>
<br/>
<br/><b>/srv/http/tuxplace-cube/core/modules/translator.so.php(43): translator.so.php::E_ERROR::init:: Cannot load default language, please check configuration</b><br/>
Stack trace: #0 /srv/http/tuxplace-cube/core/kernel.so.php(101): libtranslate->__construct('', Object(tuxKernel))
#1 /srv/http/tuxplace-cube/core/kernel.so.php(29): tuxKernel->modprobe('translator', '')
#2 /srv/http/tuxplace-cube/core/modules/hooks.so.php(16): tuxKernel->__get('alang')
#3 /srv/http/tuxplace-cube/core/kernel.so.php(101): libhooks->__construct(NULL, Object(tuxKernel))
#4 /srv/http/tuxplace-cube/index.php(40): tuxKernel->modprobe('hooks', NULL)
#5 {main}<br/><br/>

<br/>Dont worry, just try to go back in your web browser - we will repair this site soon.</body></html>


-- WebNuLL
everth
@Babcia@Stefa(alias WebNull winksmiley.jpg) - nie wiem jakiego IDE używasz, ale np. Eclipse PDT można zintegrować z XDebug. Wtedy za pomocą perspektywy Debugowania możesz śledzić wykonanie skryptu krok po kroku (lub z użyciem punktów kontrolnych), wraz z podglądem wartości poszczególnych zmiennych. Nie zawsze się z tego korzysta, ale zawsze lepsze to niż echo $zmienna.

EDIT: Wartości tablic GET i POST możesz inicjalizować przed wykonaniem skryptu.
Babcia@Stefa
Cytat(everth @ 25.08.2010, 19:43:02 ) *
@Babcia@Stefa(alias WebNull winksmiley.jpg) - nie wiem jakiego IDE używasz, ale np. Eclipse PDT można zintegrować z XDebug. Wtedy za pomocą perspektywy Debugowania możesz śledzić wykonanie skryptu krok po kroku (lub z użyciem punktów kontrolnych), wraz z podglądem wartości poszczególnych zmiennych. Nie zawsze się z tego korzysta, ale zawsze lepsze to niż echo $zmienna.

EDIT: Wartości tablic GET i POST możesz inicjalizować przed wykonaniem skryptu.


Używam gedit, zainstalowałem z repozytorium ogromny komplet wtyczek i na razie tymczasowo rozwiązałem to dodaniem wtyczki "Narzędzia zewnętrzne" która wywołuje: php $GEDIT_CURRENT_DOCUMENT_PATH

Jednak wolałbym mieć wyświetlone błędy poprzez przeglądarkę..

-- WebNuLL
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.