Kann man ein PHP-Skript interpretiert includen?

Frezl

Erfahrenes Mitglied
Hey allerseits,

ich arbeite mit einem CMS, das mir ein Framework zur Verfügung stellt. Die Ausgabe eines der Plugins möchte ich in einem Popup ausgeben. Dabei stehe ich vor folgendem Problem:

GESCHÜTZTER ORDNER:
- Zugriff auf Framework möglich
- direkter Aufruf der Skripte per HTTP nicht möglich

ÖFFENTLICHER ORDNER:
- Zugriff auf Framework nicht möglich
- direkter Aufruf der Skripte per HTTP möglich.

Wie man sieht beißt sich das, denn die Anzeige im Popup geht über HTTP, aber natürlich brauche ich auch Zugriff auf das Framework.

Ich habe mit einem Wrapper-Skript, das im öffentlichen Ordner liegt und ein anderes Skript aus dem geschützten Ordner einbindet, herumexperimentiert. Das hat aber nicht funktioniert, denn

a) per "include ()" wird der Quelltext eingebunden und im öffentlichen Ordner interpretiert, wo das Framework fehlt. --> führt zu nem Fehler

b) per "echo file_get_contents ()" wird der komplette Dateiinhalt als String eingebunden. Er wird also gar nicht interpretiert. --> nicht das, was ich will

TL;DR

Ich suche nach einer Lösung, mit der ich die HTML-Ausgabe eines PHP-Skripts in eine andere Datei einbinden kann.

Oder um es anders zu sagen: Die inkludierte Datei soll in dem Order, aus dem sie stammt, interpretiert werden und nicht in dem, in dem sie eingebunden wird.

Steh ich auf'm Schlauch, oder ist das wirklich so kompliziert?

Vielen Dank für eure Hilfe!

Grüße,
Frezl
 
Zuletzt bearbeitet:
Oder um es anders zu sagen: Die inkludierte Datei soll in dem Order, aus dem sie stammt, interpretiert werden und nicht in dem, in dem sie eingebunden wird.

Das dürftest Du mittels chdir erreichen.
PHP:
$old = getcwd();
$phpfile = '/path/to/phpfile.php';
chdir(dirname($phpfile));
include(basename($phpfile));
chdir($old);
 
Hey MArc,

vielen Dank für deinen Tipp! Jetzt wird mir endlich klar, welchen Sinn die Funktionen für den Verzeichniswechsel haben.

Bei diesem Problem hat mir das leider nichts geholfen. Aber das dürfte an den speziellen Eigenheiten des CMS und seines Frameworks liegen. Dafür muss ich mir wohl ne andere Lösung suchen. Aber in Zukunft wird mir das sicher noch mal helfen :)

Gurß und Dank,
Frezl
 
Includeverzeichnisse ändern (mache ich immer, wenn das Framework irgendwo anders liegt).

PHP:
ini_set("include_path", ini_get("include_path") . PATH_SEPERATOR . realpath("some/dir"));

oder vor jedem include das aktuelle Verzeichnis angeben:

PHP:
include_once __DIR__ . "/foo.php";
 

Neue Beiträge

Zurück