Tag,
mein Problem: Ich habe mehrere Skriptdateien die sich untereinander mittels include_once() inkludieren. Da diese Dateien verzeichnismaeßig auf unterschiedlichen Ebenen befinden muss ich absolute Pfade beim Inkludieren benutzen um dem Problem aus dem Weg zu gehen, dass ich immer spezielle Pfade setzen muss, damit das mehrfache Inkludieren ueber 2 Ebenen hinweg klappt - sprich, wenn eine Datei A, die Datei B inkludiert und A und B im selben Verzeichnis liegen, aber eine Datei C die A inkludiert, klappt es mit dem Inkludieren von B nicht mehr, weil der Pfad aus der sicht von C nicht stimmt.
Ist auch egal
Ich habe jedenfalls ein Skript geschrieben, dass die define-Anweisung in jedem Skript sucht, die den absoluten Pfad erzeugt und diesen durch den neuen ersetzt.
Sieht so aus:
In $strarray[2] steht immer die define-Anweisung und ls_dir_rec() liest rekursiv Verzeichnisse nach Dateien.
Funktioniert auch alles.
Das Problem ist, dass fputs() die Datei so ueberschreibt, dass sie am Ende leer ist. Das mit str_replace() klappt auf jeden Fall, gibt den richtigen Datei-String zurueck, nur hauts eben beim Ueberschreiben nicht hin.
mein Problem: Ich habe mehrere Skriptdateien die sich untereinander mittels include_once() inkludieren. Da diese Dateien verzeichnismaeßig auf unterschiedlichen Ebenen befinden muss ich absolute Pfade beim Inkludieren benutzen um dem Problem aus dem Weg zu gehen, dass ich immer spezielle Pfade setzen muss, damit das mehrfache Inkludieren ueber 2 Ebenen hinweg klappt - sprich, wenn eine Datei A, die Datei B inkludiert und A und B im selben Verzeichnis liegen, aber eine Datei C die A inkludiert, klappt es mit dem Inkludieren von B nicht mehr, weil der Pfad aus der sicht von C nicht stimmt.
Ist auch egal
Ich habe jedenfalls ein Skript geschrieben, dass die define-Anweisung in jedem Skript sucht, die den absoluten Pfad erzeugt und diesen durch den neuen ersetzt.
Sieht so aus:
PHP-Code:
<?php
$new_lib_path = "/www/htdocs/v077807/dev/lib/";
include("ls_dir_rec.fnc");
$array = ls_dir_rec("./files/");
foreach($array[1] as $file)
{
if(preg_match("/(.*)(define\(\"LIB_PATH\"\, \".*\"\);)(.*)/", implode("", file($file)), $strarray) != false)
{
//echo str_replace($strarray[2], "define(\"LIB_PATH\", \"".$new_lib_path."\");)", implode("", file($file)))."<hr>";
//echo $file." -- ".$strarray[2]."<br>";
$fh = fopen($file, "w+");
fputs($fh, str_replace($strarray[2], "define(\"LIB_PATH\", \"".$new_lib_path."\");)", implode("", file($file))));
}
}
Funktioniert auch alles.
Das Problem ist, dass fputs() die Datei so ueberschreibt, dass sie am Ende leer ist. Das mit str_replace() klappt auf jeden Fall, gibt den richtigen Datei-String zurueck, nur hauts eben beim Ueberschreiben nicht hin.
Kommentar