Jak uniknąć pokazywania błędów w skryptach

Wszystko o językach skryptowych takich jak PHP i Perl, serwerach WWW, CGI, bazach danych i języku SQL.
Awatar użytkownika
olek
Posty: 234
Rejestracja: 04 lip 2005, 09:11:06
Lokalizacja: Parczew
Płeć: Niewybrana

Jak uniknąć pokazywania błędów w skryptach

Post autor: olek »

Powiedzmy że otwierasz plik:

Kod: Zaznacz cały

<?php fopen&#40;"jakis_plik.txt"&#41;; ?>
i okazuję się ze ma złe chmody, wtedy dostajesz np taki komunikat:

Kod: Zaznacz cały

Warning: fopen&#40;&#41; expects at least 2 parameters, 1 given in c:\usr\krasnal\www\mstart\index.php on line 83 
Są 2 sposoby na uniknięcie pokazywania błędów:

1.Dodaj @ przed nazwą wywołanej funkcji

Kod: Zaznacz cały

<?php @fopen&#40;"jakis_plik.txt"&#41;; ?>
2. Dodaj or die() po nazwie wywołanej funkcji:

Kod: Zaznacz cały

<?php @fopen&#40;"jakis_plik.txt"&#41; or die&#40;"<span>Nie mogę otworzyć pliku <b>jakis_plik.txt</b></span>"&#41;; ?>

pozdro
Obrazek

nie udzielam pomocy na gg, od tego jest to forum albo google.pl
Awatar użytkownika
Lars
Posty: 47
Rejestracja: 24 lip 2005, 11:43:22
Płeć: Niewybrana

Post autor: Lars »

Oczywiście to nie jedyne sposoby.

Dodawanie @ lub or die(); przy każdej funkcji może być denne, np.

Kod: Zaznacz cały

<?php
@include $_GET['id'];
@fopen&#40;"jakis_plik.txt"&#41;;
?>

...przy dłuższym kodzie to męczące ;&#41;
czy:

Kod: Zaznacz cały

<?php
include $_GET['id'] or die&#40;'error'&#41;;
fopen&#40;"jakis_plik.txt"&#41; or die&#40;'error'&#41;;
?>

...przy dłuższym kodzie to męczące ;&#41;


olek - twój drugi sposób jest dziwny:
olek pisze:

Kod: Zaznacz cały

<?php @fopen&#40;"jakis_plik.txt"&#41; or die&#40;"<span>Nie mogę otworzyć pliku <b>jakis_plik.txt</b></span>"&#41;; ?>
@ i or die() ?? 8) możeby tak zrezygnować z jednego albo drugiego.

Polecam jednak najszybszy i (chyba) najlepszy sposób na wyłączenie pokazywania WSZYSTKICH błędów:

umieszczamy na początku kodu:

Kod: Zaznacz cały

<?php
error_reporting&#40;0&#41;;
?>
wyłącza to raportowanie błędów nawet jak w php.ini
jest ustawione error_reporting=E_ALL.
ODPOWIEDZ