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

Daran hatte ich schon gedacht, aber ich hab eigentlich gehofft, dass es sowas schon gibt...

Ich stell mir das nicht so einfach vor...

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]

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...