błąd przy generowaniu strony w PHP

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
gala
Posty: 1
Rejestracja: czw paź 16, 2003 11:01 pm

błąd przy generowaniu strony w PHP

Post autor: gala »

witam,

zrobiłem stronę, z którą mam problem.
Na 1 z 4 serwerów, na których miałem
postawioną do testowania stronę - nie działa
ona dobrze.
Nie generuje się do końca kod.

Strona ma budowe modułową.
Moduły są dołączane poprzez komendę "include".
Dla uproszczenia:
<?
include(naglowek.inc);
include (dane.php)
include (stopka.inc)
?>

W module 'dane' jest odwołanie do bazy MySql.
Błędy są obsłużone programowo - następuje sprawdzenie, czy
udało się połączyć z bazą.
Jeżeli nie, to wyświetlany jest komunikat i kontynuowany
proces generowania strony.

oto kawalek kodu z dane.php:
---------------------------------------------
<?
include("admin/config.php");
$connection = @mysql_connect($serwer,$login,$haslo);
$db = @mysql_select_db($baza, $connection);
if (!$connection or !$db)
{
print "Bląd bazy danych.<br>Zapraszamy za chwilę.";
}
else
{
$a=1;
print $a;
print "wszystko OK!";
}
?>
---------------------------------------------------------

plik admin/serwer.php jest prawidłowy.

Prawidłowo skrypt działa na 3 serwerach.
Natomiast na 1 serwerze powyższy kod, w przypadku błędu połączenia z bazą mysql, nic nie wyświetla - php nic nie generuje, tylko przerywa dzialanie.
Powoduje to, że obcina stopkę strony, która jest dołączana na końcu.

Co się dzieje ?
Krzysztof Kurzydło
Posty: 9
Rejestracja: czw gru 02, 2004 5:21 pm

Re: błąd przy generowaniu strony w PHP

Post autor: Krzysztof Kurzydło »

cóż
po pierwsze ten kod da się uprościć zamiast dawać konstrukcje warunkową
[php]<?php
if (!$connection OR !$db) {}
?>[/php]
Można po funkcji mysql_connect dodać wyrażenie OR DIE które wyświetla komunikat gdy nie można wykonać jakiejś operacji kod będzie wyglądał następująco
[php]<?php
mysql_connect ($serwer, $login, $haslo) OR DIE ("Bląd bazy danych.<br>Zapraszamy za chwilę.");
?>[/php]

To samo możemy dodać po wywołaniu funkcji mysql_select_db
porneL
Nowy
Nowy
Posty: 161
Rejestracja: sob lis 27, 2004 7:50 pm
Lokalizacja: Londyn
Kontakt:

Re: błąd przy generowaniu strony w PHP

Post autor: porneL »

Ten felerny serwer nie ma zainstalowanego modułu mysql. Ponieważ masz @ przed mysql_connect to nie widzisz błędu o odwołaniu do nieistniejącej tam funkcji.
Jeśli to nie to, a po usunięciu @ nadal nie widać błędu, to oznacza, że serwer jest rozsądnie skonfigurowany i dla bezpieczeństwa ma całkiem wyłączone pokazywanie błędów.
Możesz wtedy dla testów wykonać:
[php]
error_reporting(E_ALL);
ini_set('display_errors',1);
[/php]
Najlepiej te funkcje wykonać w innym pliku, niż występuje błąd, ponieważ ewentualny parse error uniemożliwi nawet ich wykonanie.
ODPOWIEDZ