Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP relative Pfade in absolute umwandeln

Empfohlene Antworten

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

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

}

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

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

Ich stell mir das nicht so einfach vor...

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

Hi,

Danke für die Tipps, ich habs hinbekommen...

War doch einfacher als Gedacht :-)

Gruß,

Markus

wie hast du es gelöst ? code posten pls


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]

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.