kills Geschrieben 5. Juli 2005 Teilen Geschrieben 5. Juli 2005 Hallo zusammen, ich habe hier eine installations-routine in php die prüft ob Dateien/Verzeichnisse vorhanden sind. Wenn dabei nun ein Fehler auftritt möchte ich ausgeben welche Datei/Verzeichnis fehlt/nicht beschreibbar ist. Da dabei aber Pfad entstehen, die den ein oder anderne User verwirren ( z.b. ./www/app1/../../ab.php) möchte ich diese durch Absolute ersetzen. Nun wollte ich das mit der Funktion realpath() machen, dieser funktioniert aber nur, wenn die Datei/Ordner existiert. Wie könnte ich das lösen? $WRITEABLE = array("/master.inc.php", "addons/import_export/files", // snip "addons/stats/logs", "../../files"); foreach($WRITEABLE as $item) { if(is_dir($item)) { // Verzeichnisse prüfen if(!@is_writable($item."/.")) { $MSG[err] .= $I18N->msg("setup_012",$item)."<br>"; } }elseif(is_file($item)) { // Dateien prüfen if(!@is_writable($item)) { $MSG[err] .= $I18N->msg("setup_014",$item)."<br>"; } }else { // Verzeichnis/Datei fehlt $MSG[err] .= $I18N->msg("setup_015",$item)."<br>"; } } [/PHP] Danke im vorraus und Gruß, Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 5. Juli 2005 Teilen Geschrieben 5. Juli 2005 $fuer_verwirrte = realpath("./www/app1"); $fuer_noch_mehr_verwirrte = realpth ("../../ab.php"); if (!$fuer_verwirrte) { echo "der Ordner". $var_fuer_app1 . ", existiert leider nicht"; } else { echo "Der absolute Pfad ist ".$fuer_noch_mehr_verwirrte; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 5. Juli 2005 Autor Teilen Geschrieben 5. Juli 2005 Das ist doch genau das was ich schon versucht hab. Wenn der Pfad nicht existiert, geht realpath nicht... realpath() returns FALSE on failure, e.g. if the file does not exists. Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 5. Juli 2005 Teilen Geschrieben 5. Juli 2005 Lese doch den absoluten Pfad deines laufenden Skripts aus und "berechne" den anderen selber, denn der ist doch relativ zu deinem Skript. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 5. Juli 2005 Autor Teilen Geschrieben 5. Juli 2005 Daran hatte ich schon gedacht, aber ich hab eigentlich gehofft, dass es sowas schon gibt... Ich stell mir das nicht so einfach vor... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 5. Juli 2005 Teilen Geschrieben 5. Juli 2005 Das lässt sich doch recht leicht als Stack implementieren: 1. push jedes Verzeichnis des abs. Pfades deines laufenden Scripts 2. push jedes weitere Verzeichnis XXX der Form XXX/ 3. pop das letzte Element vom Stack für jedes ../ das kommt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 5. Juli 2005 Autor Teilen Geschrieben 5. Juli 2005 Hi, Danke für die Tipps, ich habs hinbekommen... War doch einfacher als Gedacht :-) Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 6. Juli 2005 Teilen Geschrieben 6. Juli 2005 wie hast du es gelöst ? code posten pls Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 6. Juli 2005 Autor Teilen Geschrieben 6. Juli 2005 function absPath( $rel_path) { $path = realpath( '.'); $stack = explode(DIRECTORY_SEPARATOR, $path); foreach( explode( '/',$rel_path) as $dir) { if ( $dir == '.') continue; if ( $dir == '..') { array_pop( $stack); } else { array_push( $stack, $dir); } } return implode('/',$stack); } [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.