PHP-Fehlermeldungen, nachdem Seite online

Don Stefano

Erfahrenes Mitglied
Hallo zusammen,

ein Problem gelöst, zig andere vor der Türe!

Ich versuche gerade mein PHP Projekt als Anfänger erstmalig auf einen Internetserver zu kopieren. Soweit inzwischen auch geschehen. Dazu verwende ich einen Probeaccount von www.all-inkl.com.

Ein Problem scheint zu sein, dass ich lange Monate in PHP 5.0.3 programmiert habe, während dort nur PHP 4.3.10 zur Verfügung steht.

Ich vermute, die folgenden beiden Fehlermeldungen, bei dem Versuch sich einzuloggen stammen daher:

Code:
      Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /www/htdocs/test28989/index2.php:2) in /www/htdocs/test28989/session.php on line 5
In der Datei session.php steht in Zeile 5 nichts weiter als:

PHP:
4 // Session wird initialisiert
      5 session_start();
Kann mir jemand erklären was da schief geht ? Kommt PHP 4 mit Sessions in dieser Syntax nicht zurecht (oder gar nicht?). Wie kann man das Problem vielleicht lösen.


Außerdem folgende Fehlermeldung:
Code:
      Parse error:  parse error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /www/htdocs/test28989/xmysqli.php on line 5

Die entsprechende Datei definiert eine Funktion und verwendet die Klasse xmysqli um die Datenbankquerys zu vereinfachen. Da sie kurz ist hier der komplette Code:

PHP:
      1 class xmysqli extends mysqli {
      2
      3	const host	= "localhost";
      4	const user	= "hinz";
      5   const passwd  = "kunz";
      6   const mydb	= "hinzkunz";
      
      	  function __construct()
      	  {
      		 parent::__construct(self::host, self::user, self::passwd, self::mydb); 
      	  }
      	
      	function echoquery($query)
      	{
      		echo "<p>$query</p>";
      		$result = $this->query($query);
      		if ($this->errno) 
      		{
      			echo($this->error);
      			return NULL;
      		}
      		
      		echo '<table border cellpadding="5"><tr>';
      		echo '<th>[Nr]</th>';
      		while ($field = $result->fetch_field())
      			echo "<th>$field->name</th>";
      		echo "</tr>";
      		$rec = 0;
      		while ($row = $result->fetch_row())
      		{
      			echo "<tr><td>$rec</td>"; $rec++;
      			for ($i = 0; $i < $result->field_count; $i++)
 		 	echo "<td>".htmlentities($row[$i])."&nbsp;</td>";
      			echo "</tr>\n";
      		}
      		echo "</table>";
      		$result->close();
      		return TRUE;
      	}
      }
      ?>

Kann es sein, dass diese Klasse in PHP 4 gar nicht existiert und es daher auch nicht klappen kann?

Oder liegen die Probleme in irgendwelchen Einstellungen, die ich ändern muss (oder mein Anbieter)?

Macht es dann überhaupt Sinn mit einem PHP 4 Server zu arbeiten oder soll ich meine Mühen sparen und mir einen mit PHP 5 Unterstützung suchen?

Vielen lieben Dank für jede Hilfe. Ich weiss an dieser Stelle wirklich GAR NICHT mehr weiter.
 
wenn er das sagt, hat er den Datei-Header schon geschickt, dass heißt vor dem beginnenden "<?php" ist mindestens ein zeichen, es darf aber absolut keins da sein.

Zu sehen ist das auch an der Fehlermeldung:
output started at /www/htdocs/test28989/index2.php:2

er sagt, dass schon in Zeile 2 (->:2) etwas geschrieben (output) wurde
 
Danke, aber daran kann es dann wohl nicht liegen.

Die Datei beginnt folgendermaßen und es steht leider nichts vor dem: <?php

PHP:
<?php
     // Dient zum Prüfen von $login und $passwd
     
     // Session wird initialisiert
     session_start();
     
     //Abfrage der Session ID von der Vorseite
     if($_SESSION[s_id]!=session_id())
     {
      session_destroy();
      Header("Location:fehler.php");
      exit();
     }
     ...
Oder liegt es daran, dass diese Datei includet wird und vorher schon anderer Code abgearbeitet wurde? Aber auf meinem XAMP System zu Hause läuft es ohne Probleme so.
 
Also auf meinem Entwicklungssystem läuft es so ohne Probleme. Und die Fehlermeldung bezieht sich ja auch auf Zeile 5 (die Zeile wo die Session gestartet wird). Kann es dann trotzdem damit zu tun haben?

Wer hat denn weitere Ideen, woran diese beiden Fehlermeldungen liegen ?
 
[phpf]mysqli[/phpf] erfordert PHP5 und Mysql 4.1

Deine index2.php wird einen Fehler ausgeben... das ist der Output, der dort startet.
 
session_start() muss ganz AM ANFANG DER DATEI stehen.

Also in der ersten Zeile, und zwar in einem eigenen php start+end-tag, sonst bekommst du nur Probleme.
Wäre jedenfalls möglich das es daran liegt.

PHP:
<?php session_start(); ?>

EDIT: hab grad noch gelesen das dieses Script included wird, schreib den Session-Start am besten gleich in die Index, wo du Sie später brauchst is ja egal.

Greez da XEMO
 
Zuletzt bearbeitet:
Hallo und vielen Dank für die Hinweise.

Ich habe nun gerade bei all-inkl.com Webspace bestellt und gebeten diesen auf PHP 5 und MySql 4.1 zu konfigurieren.

Danach werde ich es dann noch einmal ausprobieren. Alles andere scheint mir im Moment doch unnötige Arbeit zu sein. Warum sollte ich meine Skripte nun anfangen downzugraden und auf Klassen verzichten, die PHP 5 zur Verfügung stellt? (das war eine rethorische Frage).


Was ich nicht verstanden habe:
EDIT: hab grad noch gelesen das dieses Script included wird, schreib den Session-Start am besten gleich in die Index, wo du Sie später brauchst is ja egal.
Xemo, was willst du mir damit sagen?
 
Die Vorteile der mysqli Erweiterung sind mir auch nicht klar.

Ich habe PHP unter anderem mit Hilfe des Buches "PHP 5 & MySQL 4.1" gelernt. Darin findet diese Erweiterung zur Datenbankkommunikation Verwendung. Ich habe sie dann in meiner Unwissenheit übernommen.

In der Dokumentation, die Sven Mintel verlinkt hat, sehe ich aber nun, dass diese Erweiterung wohl experimentell ist und daher bei all-inkl.com vermutlich eh deaktiviert ist.

Heißt das nun ich muss statt dieser eine andere Erweiterung nehmen? Und heißt diese dann einfach mysql (also ohne das i ?).

Müßte ich meine Skripte dann einfach so ändern, dass ich dort überall wo mysqli steht das i entferne?
 
Zurück