![]() |
[PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Hi.
Nach einem PHP-Versionswechsel von 4 auf 5 bin ich nun dabei die Scripte anzupassen. Ein Script nervt besonders. Das gesamte Script handelt von einem virtuellen Rundgang, der angesprochene Teil zeichnet auf eine Image (Plan) einen Aufenthaltspunkt, welchen es aus der Datenbank entnimmt. Soweit sogut, hat auch alles wunderbar geklappt. Doch jetzt, nach der Umstellung, meldet der Browser immer
Code:
Ich habe die Ursache auf einen Includedatei begrenzen könne, sie enthällt die Klasse "Location".
Die Grafik ".../plan.php?id=2" kann nicht angezeigt werden, weil sie Fehler enthält.
Man übergibt ihr die ID des Bildes und die Klasse besorgt einem dann alles was man über das Bild in der Datenbank hat. Hier der Code
Code:
Was ist an dieser Klasse falsch??? Wie gesagt, unter PHP 4 ging alles reibungslos.
<?php
include ("../config.inc.php"); //An dieser weiteren Include liegts nicht. $dummy = ";;;;;;;;;;;"; class Location { var $id; var $name; var $room_nr; var $directions = array (); //of bool var $direction_paths = array (); //id array var $direction_names = array (); var $quer; var $koordinaten = array (); var $door; var $stockwerk; var $turn; var $dummy_names = array (); var $visits; // Hab hier schon public vorgeschrieben, bringt auch nix public function GetProperties ($id,$inc) { //An SQL-Codes liegts nicht... $query = mysql_query ("SELECT ... FROM ... WHERE id = '$id'"); if (!$query) { die ("Error in SQL-Syntax ".mysql_error ()); } $r = mysql_fetch_array ($query); $this->id = $id; $this->name = $r[1]; $this->room_nr = $r[2]; $this->quer = $r[5]; $this->directions = explode (";",$r[3]); $this->direction_paths = explode (";",$r[4]); $this->door = $r[7]; $this->koordinaten = explode (";",$r[6]); $this->stockwerk = $r[8]; $this->turn = $r[9]; if (!empty($r[10])) { $this->dummy_names = explode(";",$r[10]); } else { $this->dummy_names = explode(";",$dummy); } $this->visits = $r[11]+1; if ($inc) { $handle = fopen ("buffer.dat","r"); $allVisits = fread ($handle,filesize ("buffer.dat")); fclose ($handle); $allVisits++; $handle = fopen ("buffer.dat","w"); fwrite ($handle,$allVisits); fclose ($handle); mysql_query ("UPDATE ... SET visits = visits+1 WHERE id = '$id'"); } foreach ($this->direction_paths as $v) { $query = NULL; $query = mysql_query ("SELECT ... FROM ... WHERE id = '$v'"); if (!$query) { die ("Error in SQL-Syntax ".mysql_error ()); } $buffer = mysql_fetch_array ($query); array_push($this->direction_names,$buffer[0]); } } } ?> Thx, Flips |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Wie sieht die Fehlermeldung im Detail aus?
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Hehe, die Fehlermeldung ist so wie oben, hab nur den Host "zensiert" :-)
Gibt nicht mehr, keine PHP-Fehler |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Schau die mal die Ausgabe des Scriptes an nich das was im img Tag steht
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
dummy ist nicht initalisiert in der klasse.
wenn du dummy nutzen willst, als parameter übergeben oder "global" machen. dieses würde dir aber auch als fehlermeldung angezeigt werden, wenn du die fehlermeldungen anschaltest in der php.ini.
Code:
instanzierst du die klasse irgendwo?
error_reporting = E_ALL
display_errors = On |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Und die in der Logdatei des Php-Interpreters?
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Hi.
Sry für die späte Antwort, hab jetzt über
Code:
die Fehlerausgabe aktiviert, auch wenn das erste ini_set false zurückgibt. Naja egal, jedenfalls liefert der Aufruf der location.php (Code oben gepostet) im Browser keine Fehlermeldung -> Fehlerfrei.
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL); In der Bild-erzeugenden Datei, die ich gleich poste, wird diese Datei eingebunden. Ich kann alles was mit der Klasse zusammenhängt ausklammern (wie im Code unten), erst wenn ich die location.php selbst nicht mehr einbinde, wird das Bild dargestellt.
Code:
Der Code hat mit PHP 4 geklappt, nur jetzt wird erst ein Bild angezeigt, wenn die location.php ausgebunden wird (und damit dann keine Variablen fehlen hab ich alles damit verbundene ebenfalls in Kommentarzeilen gesetzt.).
<?php
ini_set('display_errors', 1); ini_set('error_reporting', E_ALL); //Hier stehn alle Variablen drin, die noch benötigt werden include ($CONFIG); /* include ("location.php"); $Location = new Location (); $Location->SetPropertys ($_REQUEST["id"],false); $x = $Location->koordinaten[0]; $y = $Location->koordinaten[1]; */ header ("Content-type: image/png"); //Damit ein Bild kommt $handle = @imagecreatefromPNG ("pics/ug.png"); /* switch ($Location->stockwerk) { case -1 : $handle = @imagecreatefromPNG ("pics/ug.png"); break; case 0 : $handle = @imagecreatefromPNG ("pics/eg.png"); break; case 1 : $handle = @imagecreatefromPNG ("pics/1og.png"); break; case 2 : $handle = @imagecreatefromPNG ("pics/2og.png"); break; } $viewpoint_color = ImageColorAllocate ($handle,$r,$g,$b); $border_color = ImageColorAllocate ($handle,0,0,0); ImageFilledArc ($handle,$x+7,$y+6,14,14,0,360,$viewpoint_color,IMG_ARC_PIE); //IMG_ARC_PIE IMG_ARC_CHORD ImageFilledArc ($handle,$x+7,$y+6,14,14,0,360,$border_color,IMG_ARC_NOFILL); */ ImagePNG ($handle); ?> Wieso will er die location.php nicht einbinden, obwohl sie fehlerfrei ist???? Achso @generic, ja ich instanziere sie doch über $Location = new Location (); |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Du musst dir die Source anzeigen lassen. Einfach das BIld aufrufen
und dann Strg+U beim Firefox drücken. Dann bekommst du die Fehler angezeigt. Alternativ kannst du auch den header()-Aufruf weglassen, mit dem du deinem Browser sagst, es handle sich um ein Bild. Mit freundlichen Grüßen, Valle |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Oder halt die Logdatei anschauen
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Zitat:
Mit freundlichen Grüßen, Valle |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Zitat:
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Wie soll ich den Source beim Fehler lesen?
Wenn die Meldung Zitat:
Wenn ich den Content-Type nicht auf png umstelle, dann seh ich natürlich das "kauderwelsch" -> es wird schonmal was gemacht. Aber darin lässt sich kein PHP-Fehler erkennen...:-( |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Sry für Doppelpost, ich lad das ganze jetzt mal hier aufn lokalen Apache Server, da hab ich bedeutend mehr rechte^^
Melde mich dann morgen wieder :wink: |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Also...hab alles aufem lokalen Webserver, der zeigt mir immerhin schon mal an das ich den PNG-Header zur spät sende, immerhin mal ein Fehler ausgebessert. (Der Header-Fehler wurde in der letzten Zeile der location.php ausgelöst, obwohl da nur ?> steht...)
Jetzt habe ich einfach mal die Klasse in die bild-erzeugende Datei kopiert, sodass ein include überflüssig wird. Tja und jetzt läufts.. :wall: Habs dann auch noch mit require und include_once probiert..ohne Erfolg. Naja jetzt gehts ja, danke für eure Hilfe!!! :thumb: :dp: Achso ja, die PHP-Fehler die eigentlich deaktiviert sind lass ich jetzt via
Code:
am Anfang der Datei anzeigen, auch wenn der erste Aufruf false zurückgibt, funzt trotzdem :stupid:
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL); |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Zitat:
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Hmm...dürfte er dann nicht schon bei der Interpretation der location.php Fehler melden? ich meine ein fehlendes ?>...Ist das nicht wie in Delphi ein fehlendes end. Also Fatal Error?
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
In php ist der ?> End-Tag normalerweise optimal (am ender der datei)
Gut, damit hinter dem End-Tag ein Zeilenumbruch oder Leerzeichen das Script nicht manipuliert. mfg, Björn |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
du meinst optional...?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz