PHP stinkt!

Ich glaub’s echt nicht! Entweder habe ich gerade einen gewaltigen Knoten in meinen Gedanken, oder da ist ein gewaltiger Hau drin. Folgendes Problem: in meinem Liveticker root Ordner gibt es eine Datei config.php, die alle relevanten Konfigurationseinstellungen enhält. Nun habe ich einen Unterordner match in diesem Verzeichnis. Darin befindet sich die Datei matchview.class.php, welche meine MatchView Klasse enthält.

Im root Ordner habe ich weiters eine Datei test.php, die über require_once ‘match/matchview.class.php’; oben genannte Klasse bekannt macht, damit ich dann eine neue Instanz eben derer machen kann und so weiter und so fort.

Ich brauche in matchview.class.php Konfigurationseinstellungen. Was mache ich in meinem jugendlichen Lichtsinn? Ich schreibe require_once ‘../config.php’;. Ich bin schließlich im Ordner ./match und config.php liegt einen Ordner höher.

/config.php
/match/matchview.class.php
/test.php

Wenn ich nun test.php aufrufe, kriege ich folgenden unschönen FATAL ERROR:

[20-Feb-2009 09:25:48] PHP Fatal error: require_once() [<a href=’function.require’>function.require</a>]: Failed opening required ‘../config.php’ (include_path=’.:/Applications/MAMP/bin/php5/lib/php’) in /Users/mwidmann 1/Dropbox/projects/liveticker/match/matchview.php on line 2

Wenn ich config.php über require_once ‘config.php’; einbinde, dann geht’s komischerweise. Dieses Phänomen sollte mir mal jemand erklären, denn Sinn macht es für mich keinen.

One Reply to “PHP stinkt!”

  1. Serwas,

    Der Include Path in PHP bezieht sich auf das aktuell ausgeführte Skript, nicht auf den Ordner in dem das Skript liegt 😉

    /somewhere/.
    /somewhere/index.php
    /somewhere/config.php
    /somewhere/match/matchview.class.php

    Wenn du index.php im Browser aufrufst, dann bezieht sich der “.” auf genau diesen Ordner. Dies gilt auch in deiner matchview.class.php. Darum findet PHP auch die “config.php” obwohl aus Sicht des Filesystems die Datei eigentlich wo anders liegt…

    Das nervt, was auch PHP mittlerweile begriffen hat. Dafür gibts PHP Autoloading.

    LG,
    Daniel

Leave a Reply