Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

$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;

}

Geschrieben

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

Geschrieben

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

Geschrieben

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]

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...