require lädt PHP-Skript als Text und nicht als Programm

Parantatatam

mag Cookies & Kekse
Hallo,

ich habe gerade ein sehr witziges, aber doch sehr nervendes Problem mit require_once() [require(), include(), include_once() ebenso]. Wenn meine autoload.php geladen wird [eingebunden per require()], dass mir am Anfang die Dateien korrekt als PHP-Dateien geladen werden, später aber auf einmal nur noch der Quelltext als Text geladen und ausgegeben wird und mir aber auch ein Fatal Error gezeigt wird, weil die Datei nicht als Programm geladen wurde. Nun stellt sich mir natürlich die Frage, warum das so ist und zweitens, warum das auf einmal so ist, ohne das ich etwas geändert habe.

So sieht meine autoload.php aus:
PHP:
<?php
require_once 'include/inc.database.php';

if(version_compare(phpversion(), '5.1.0', '<')) {
	trigger_error('PHP version must be greater or equal 5.1.0. Your PHP version is '.phpversion());
}

// Umgebungskonstanten definieren
define('CONF_DIR',  'conf/'); // Dateipfad zur autoload.ini
define('ROOT_DIR',  dirname(__FILE__)); // Pfad zum Wurzelverzeichnis (von dieser Position aus) definieren
define('CLASS_DIR', ROOT_DIR.'/class');

// Laedt Klassen aus den definierten Verzeichnissen
function __autoload($class) {
	// Klassennamen vorbearbeiten
	$class = strtolower(iTrim($class));
	
	// Gekennzeichnet als abstrakte Klasse
	$type = substr($class, 0, 8) == 'abstract'  ? 1 : NULL;
	// Gekennzeichnet als Interface
	$type = substr($class, 0, 9) == 'interface' ? 2 : $type;
	
	// Klassentyp waehlen
	switch($type) {
		// abstrakte Klasse
		case 1:
			$load = '/abstract.'.substr($class, 8).'.php';
			break;
		
		// Interface
		case 2:
			$load = '/interface.'.substr($class, 9).'.php';
			break;
		
		// Normale Klasse
		default:
			$load = '/class.'.$class.'.php';
			break;
	}
	
	// Wenn die Datei geladen werden konnte
	if(file_exists(CLASS_DIR.$load)) {
		require_once CLASS_DIR.$load;
	}
		
	// Wenn die Datei nicht geladen werden konnte
	else {
		trigger_error('__autoload('.CLASS_DIR.$load.') failed to open stream: No such file or directory', E_USER_WARNING);
	}
}
?>
Diese Datei wird in meiner index.php aufgerufen, welche im gleichen Verzeichnis auf der gleichen Verzeichnisebene liegt.

Meine Ordnerstruktur:
Code:
> ...
> autoload.php
> class
>>> abstract.basic.php (wird richtig geladen)
>>> class.basic.php (wird richtig geladen)
>>> class.teacher.php  (wird richtig geladen)
>>> class.addteacher.php
>>> class.editteacher.php
>>> ...
> index.php
> ...
 
Nein, weder steht was im Log noch verwende ich show_source() oder highlight() oder highlight_file() noch irgendwas ähnliches.
 
Lösung: Und wieder mal zeigt sich, dass man am Abend solche Fragen unbeantwortet lassen sollte, in der guten Hoffnung, dass man sie am nächsten Tag in neuer Frische beantworten kann. Bei mir war es bisher so, dass die Klassen Teacher, addTeacher und editTeacher in einer Datei standen, ich diese aber aus Gründen der Übersichtlichkeit in drei Dateien zerlegt habe. Wenn man jetzt den Quelltext einfach ausschneidet und in einer neuen Datei einfügt, dann sollte man auch darauf achten, dass man davor und dahinter ein <?php ... ?> schreibt. Was für ein dummer Fehler.
 
Hi,

Wenn man jetzt den Quelltext einfach ausschneidet und in einer neuen Datei einfügt, dann sollte man auch darauf achten, dass man davor und dahinter ein <?php ... ?> schreibt. Was für ein dummer Fehler.

Das wäre eigentlich meine erste Frage gewesen, aber da Du ja sagtest:

Nun stellt sich mir natürlich die Frage, warum das so ist und zweitens, warum das auf einmal so ist, ohne das ich etwas geändert habe.

Also immer jede Kleinigkeit erwähnen. ;)

LG
 
Zurück