php, "was ist mein Name"
mathefritz
- php
0 dedlfix0 mathefritz0 mathefritz
0 TS0 Robert B.0 mathefritz0 Tabellenkalk0 TS0 Rolf B
0 Rolf B
gibt es eigentlich für phpSkripte eine einfache Möglichkeit ( z.B. nicht mehr als 2 nicht überlange Zeilen )
den Namen der Datei in der es sich befindet zu betimmen - ohne Pfad, ohne die Extension .php ?
Tach!
gibt es eigentlich für phpSkripte eine einfache Möglichkeit ( z.B. nicht mehr als 2 nicht überlange Zeilen )
den Namen der Datei in der es sich befindet zu betimmen - ohne Pfad, ohne die Extension .php ?
Die magische Konstante __FILE__
enthält den Namen der Datei, in der der Aufruf der Konstante geschrieben steht.
Mit pathinfo() und anderen unter See Also gelisteten Funktionen kann man aus Dateinamen Teile extrahieren.
dedlfix.
Danke!
also ( getestet )
<?php
echo __FILE__,'<br>'; // vollständig
echo $n = substr(__FILE__, strrpos(__FILE__,'/')+1 ),'<br>'; // Name mit Extension
echo substr($n, 0, strrpos($n,'.') ) ,'<br>'; // nu name
?>
pathinfo(FILE_NAME)
wie auch pathinfo('FILE_NAME')
ergeben auf lima-city Array
;
aber
da mir hier noch niemand von __FILE__
abriet verwende ich es
Tach!
pathinfo(FILE_NAME)
wie auchpathinfo('FILE_NAME')
ergeben auf lima-cityArray
;
Wenn man es mit echo ausgibt. Da die Funktion pathinfo() aber ein Array zurückgibt, ist echo nicht die passende Methode, sich dessen Inhalt anzuzeigen. print_r() oder var_dump() musst du da schon nehmen.
Es gibt aber keinen Sinn, pathinfo(FILE_NAME) auszuführen, wenn es keine Konstante FILE_NAME gibt. Und pathinfo('FILE_NAME') wird keine großartigen Erkenntnisse bringe. Du musst dem pathinfo() schon einen echten Dateinamen übergeben oder eine Variable oder Konstante, die einne solchen als Inhalt hat.
aber da mir hier noch niemand von
__FILE__
abriet verwende ich es
Warum sollte das jemand tun?
dedlfix.
Hallo dedlfix,
ich habe zumindest zur Vorsicht geraten, weil man sich bei Verwendung von includes kurz Gedanken machen sollte, ob man besser die Info zur aktuellen Datei oder zum aktuellen Script verwendet.
Rolf
Hello,
gibt es eigentlich für phpSkripte eine einfache Möglichkeit ( z.B. nicht mehr als 2 nicht überlange Zeilen )
den Namen der Datei in der es sich befindet zu betimmen - ohne Pfad, ohne die Extension .php ?
Da Du vermutlich immer noch an deinem Request-Router arbeitest, wäre pathinfo() vermutlich dein Freund.
Dem musst Du dann nur die Info aus dem Request übergeben.
Oder Du schaust gleich in $_SERVER['PATHINFO'] nach, was aber nicht immer vorhanden ist. Und dann gibt es noch $_SERVER['REDIRECT_URL'], die dann vorhanden sein sollte (je nach Distribution des Webservers), wenn Du mod_rewrite (Apache) benutzt hast.
Bevor Du eine Entscheidung triffst, schau Dir alle Möglichkeiten an.
Liebe Grüße
Tom S.
Moin Tom,
Dem musst Du dann nur die Info aus dem Request übergeben.
Das funktioniert allerdings nicht mit eingebundenen Dateien, sondern so, wie dedlfix vorgeschlagen hat.
Viele Grüße
Robert
Danke;
die Manualseite wird mit Deinem parhinfo() Link nicht gefunden,
und keiner der $_SEVER Einträge scheint vorhanden zu sein ( echo gibt dafür nichts aus )
kann es mit
FILE Probleme geben?
Hallo,
die Manualseite wird mit Deinem parhinfo() Link nicht gefunden,
Bist du auf die Idee gekommen, das Suchfeld mit dem korrekten Begriff "pathinfo" zu füttern?
Wenn ja, warum nicht?
Gruß
Kalk
Hello,
merkwürdig. Das tut mir leid.
Da ist irgendwo (MiM?) was verloren gegangen.
Liebe Grüße
Tom S.
Hallo mathefritz,
wenn Du $_SEVER statt $_SERVER geschrieben hast, ist das kein Wunder.
Rolf
Hallo,
wenn Du $_SEVER statt $_SERVER geschrieben hast, ist das kein Wunder.
das gleiche gilt für parhinfo…
Gruß
Kalk
Hallo mathefritz,
mein Name ist - ja - wer bin ich denn?
foo.php:
<?php
include 'bar.php'
echo '<br>';
echo 'foo: Ich bin ' . __FILE__ . '<br>';
echo 'foo: Mein Script heißt - teilweise : ' . $_SERVER['SCRIPT_NAME'] . '<br>';
echo 'foo: Mein Script heißt - vollständig: ' . $_SERVER['SCRIPT_FILENAME'] . '<br>';
bar.php:
<?php
echo 'bar: Ich bin ' . __FILE__ . '<br>';
echo 'bar: Mein Script heißt - teilweise : ' . $_SERVER['SCRIPT_NAME'] . '<br>';
echo 'bar: Mein Script heißt - vollständig: ' . $_SERVER['SCRIPT_FILENAME'] . '<br>';
Wenn der Ordner, in dem diese beiden PHPs stecken, /home/web/mathe/fritz heißt, und die URL mathe.example.com auf /home/web/mathe zeigt, dann würde die Ausgabe von http://mathe.example.com/fritz/foo.php
so aussehen:
bar: Ich bin /home/web/mathe/fritz/bar.php
bar: Mein Script heißt - teilweise : /fritz/foo.php
bar: Mein Script heißt - vollständig: /home/web/mathe/fritz/foo.php
foo: Ich bin /home/web/mathe/fritz/foo.php
foo: Mein Script heißt - teilweise : /fritz/foo.php
foo: Mein Script heißt - vollständig: /home/web/mathe/fritz/foo.php
TL;DR: Willst Du den Pfad der AKTUELLEN Datei, nimm FILE. Willst Du den Namen des Scripts, das der User aufgerufen hat, relativ zum Web-Root, nimm $_SERVER['SCRIPT_NAME']. Willst Du den absoluten Pfad auf dem Server, nimm $_SERVER['SCRIPT_FILENAME'].
Wenn Dich der übrige Inhalt der diversen Superglobals wie $_SERVER interessiert, schreib Dir eine Mini-PHP Datei, die nur die Funktion phpinfo() aufruft. ECHO brauchst Du nicht, das macht die selbst. Dann wirst Du zugeschmissen.
Rolf
Moin Rolf,
TL;DR: Willst Du den Pfad der AKTUELLEN Datei, nimm FILE.
Bzw. nimm unter Berücksichtung des Forums __FILE__
oder __FILE__.
Viele Grüße
Robert