php: läsa övergripande katalognamn

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Göteborg
  • 2004-02-25 16:41

Hej!

Jag undrar om det finns ett smart sätt att läsa av den övergripande mappens namn?
Alltså den mappen som innehåller den php-fien som man jobbar med. Jag har förstått hur man läser neråt i mapphierarkin men inte hur man gör det ett steg uppåt.

Jag har hittat funktionen Dirname() men funktionen nedan ger mig bara '..' som svar. Ingen skillnad mellan ingen 1 eller 2 punkter. Det verkar som om man måste känna till mappnamnet om man skall få ut det med dirname(), men då är det ingen vits!

$mappnamn=dirname('../index.php');

  • Medlem
  • Kungsbacka
  • 2004-02-25 17:04

Det "dirname()" egentligen gör är att klippa ut det som står innan filnamnet, alltså strängen innan sista /
Den har alltså absolut ingen koll på filsystemet.

För att göra det du vill tror jag att detta ska funka:

$real_path = realpath("../index.php");
$mappnamn = dirname ($real_path);

Eller om man vill göra det lite kompakt och snyggt:

$mappnamn = dirname(realpath("../index.php"));

Ursprungligen av pichia:

Hej!

Jag undrar om det finns ett smart sätt att läsa av den övergripande mappens namn?
Alltså den mappen som innehåller den php-fien som man jobbar med. Jag har förstått hur man läser neråt i mapphierarkin men inte hur man gör det ett steg uppåt.

Jag har hittat funktionen Dirname() men funktionen nedan ger mig bara '..' som svar. Ingen skillnad mellan ingen 1 eller 2 punkter. Det verkar som om man måste känna till mappnamnet om man skall få ut det med dirname(), men då är det ingen vits!

$mappnamn=dirname('../index.php');

Det finns väl ganska många sätt. Det beror lite på vad du är ute efter:

echo getcwd();
<?php
$var_ar_filen = explode("/", trim($_SERVER['SCRIPT_NAME']));
$raknare = count($var_ar_filen)-1;
$filen = $raknare;
$katalogen = $raknare-1;
  print("filen  --> ".$var_ar_filen[$filen]."<br>");
  print("katalogen  --> ".$var_ar_filen[$katalogen]."<br>");
?>

//Mikael

  • Medlem
  • Göteborg
  • 2004-02-25 18:25
Ursprungligen av Mikael Svensson:

Det finns väl ganska många sätt. Det beror lite på vad du är ute efter:

echo getcwd();
<?php
$var_ar_filen = explode("/", trim($_SERVER['SCRIPT_NAME']));
$raknare = count($var_ar_filen)-1;
$filen = $raknare;
$katalogen = $raknare-1;
  print("filen  --> ".$var_ar_filen[$filen]."<br>");
  print("katalogen  --> ".$var_ar_filen[$katalogen]."<br>");
?>

//Mikael

Ja, getcwd ger samma effect som realpath, man får hela sökvägen.
Men ditt andra skript var en hit. den gör precis vad jag behöver, plockar sökvägenbi bitar och hämtar ut den näst sista biten (katalogen). Tack så hemskt mycket Mikael!

PS: jag lyckas inte använda dessa CODE taggar när jag skriver inlägg på 99mac. Den lämnar den inledande CODE och bryter av inlägget efter kodsnutten utan att formaterar tjusigt som för dig. Har det med Safari att göra?

  • Medlem
  • Göteborg
  • 2004-02-25 18:18
Ursprungligen av Crafty:

Det "dirname()" egentligen gör är att klippa ut det som står innan filnamnet, alltså strängen innan sista /
Den har alltså absolut ingen koll på filsystemet.

För att göra det du vill tror jag att detta ska funka:

$real_path = realpath("../index.php");
$mappnamn = dirname ($real_path);

Eller om man vill göra det lite kompakt och snyggt:

$mappnamn = dirname(realpath("../index.php"));

realpath plockar fram hela sökvägen från serverroten till den aktuella filen. Jag vill bara ha sista delen, katalogen strax över filen.
Men tack Crafty. Den funktionen kan man ha användning för ändå.

1
Bevaka tråden