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 ?
błąd przy generowaniu strony w PHP
-
Krzysztof Kurzydło
- Posty: 9
- Rejestracja: czw gru 02, 2004 5:21 pm
Re: błąd przy generowaniu strony w PHP
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
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
Re: błąd przy generowaniu strony w PHP
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.
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.
