So erzeugen Sie absolute URL-Pfad zu einer script-Datei?
Dies ist fast die gleiche Frage wie diese
Ich brauche, um die ABSOLUTE url zu meinem Skript.
Ich habe zum Beispiel diese Struktur
http://mydomain.com/downloads/games/freegame_222/ajax.php
Mein root der Anwendung wäre in freegame_222/
aber, wie kann ich "bauen" absolute, nicht relative Pfad zu ajax.php?
Ergebnis
http://mydomain.com/downloads/games/freegame_222/ajax.php
oder
/downloads/games/freegame_222/ajax.php
aber nicht:
ajax.php
Diese Beispiele zurück nach url("ajax.php");
heißt
Gibt es eine native Funktion in PHP? Wenn Nein, weiß jemand über irgendwelche custom?
EDIT:
Möchte ich nennen, dass die Seite von einer anderen Seite, zum Beispiel index.php
bewusst sein : $_SERVER['SERVER_NAME'] kann es nicht geben mydomain.com abhängig von der Konfiguration des Servers. verwenden Sie $_SERVER['HTTP_HOST'] statt
InformationsquelleAutor genesis | 2011-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ähnlich wie George Cummins' beantworten, machen Sie einfach etwas wie:
Diese sollten geben Sie den vollständigen Pfad. Nun, wenn Sie erhalten möchten diese von einer anderen Seite, welchen Grund gibt es, um es zu generieren, die url dynamisch? Warum können Sie nicht einfach verwenden Sie einen absoluten Pfad, oder wenn überhaupt, dann
$_SERVER['SERVER_NAME']
+ rest Weg, damit es funktioniert zwischen Domänen/hosts.css/default.css
) nicht mehr benutzt werden kann in untergeordnete OrdnerKönnen Sie näher erläutern, was du meinst? Ich fand, dass der Satz unmöglich zu analysieren.
Es kommt auf die Tatsache, dass man nicht einfach "finden" den Speicherort einer Datei dynamisch, es sei denn, Sie wollen bauen, eine Funktion, die rekursiv durch die Verzeichnisse aus und gibt den Pfad des matched-Datei, oder wenn Sie wollen, zu entkommen, um die shell und führen Sie eine finden. Ihre Datei sollte die Struktur nicht ändern, wenn Sie bauen dieses Projekt richtig. Also, nutzen Sie einfach die vorgeschlagene Methode der dynamisch hinzufügen den server-Namen, um die uri, damit es funktioniert zwischen Domänen/hosts
Sehen Sie, Sie haben open-source-software selbst geschrieben. Benutzer können hinzufügen /subdir/ anstelle von / - Recht? Jetzt habe ich seo-freundliche urls. Also die url sieht aus wie /subdir/alle/url/ und ich brauche, um die css-Datei aus /subdir/css/ -, so muss ich ERKENNEN /subdir/ app Weg. Also in <head>, die ich verwenden könnte
<link href="<?php APP_DIR; ?>/css/some.css" .... />
$genesis: Sie sind auf der Suche nach unten ein unnötig komplizierter Weg. Einrichten einer definition, oder analysieren eine .ini-Datei enthält Pfad und dann definieren Sie es so, es kann leicht geändert werden, durch die Einstellung.ini-Datei zum Beispiel. Wenn Sie wirklich wollen, zu erkennen, den Pfad würde ich empfehlen, die Flucht in die Schale, tun einen zu finden, und haben Sie wieder den Pfad .
InformationsquelleAutor grep
dies ist die richtige Antwort
InformationsquelleAutor ceejayoz
Diese Daten in die $_SERVER superglobale
Mein Beispiel war einfach konzipiert, zeigen Sie die verfügbaren Daten. Sie nicht brauchen, um echo; können Sie umleiten zu einer anderen Seite mittels header("Location:...") oder in irgendeiner anderen Weise, die Sie wünschen.
George, ich bin nicht neu in PHP und ich weiß, dass diese superglobalen existieren. Aber ich HABE ZU BAUEN ABSOLUTEN PFAD ZUM VERZEICHNIS der ANWENDUNG für die spätere Verwendung
Schreien Menschen geben Sie kostenlos Beratung ist ein guter Weg, nicht zu bekommen Kostenlose Beratung. Darüber hinaus, wenn Ihre Frage war unklar, die Störung kann es kaum liegen, mit dem Beantworter. Ich hoffe es klappt für Sie.
Sorry @Georg, gestern bearbeitete ich meine Frage und jemand bearbeitet und gelöscht meine Beiträge. Können Sie es Lesen jetzt bitte? "Diese Beispiele zurück nach url("ajax.php"); Funktion aufgerufen wird"
InformationsquelleAutor George Cummins
Den parse_url() Funktion könnten tun, was Sie suchen:
Hier ein vollständigeres Beispiel von die manual-Seite:
Dem obigen Beispiel wird ausgegeben:
Ich glaube, Sie brauchen, zu Bearbeiten, OP. Das ist nicht das, was Sie angegeben haben in Ihrer Frage.
Result will be: http://mydomain.com/downloads/games/freegame_222/ajax.php or /downloads/games/freegame_222/ajax.php
Sie fragte nach
/downloads/games/freegame_222/ajax.php
, und ich code das gab Sie/downloads/games/freegame_222/ajax.php
, aber Sie sagen, dass ich nicht geben Sie, was Sie wollte. Vielleicht können Sie verstehen meine Verwirrung.InformationsquelleAutor
Nicht relevant für die Frage, aber es ist erwähnenswert, dass die HTTP/HTTPS verzichtet werden kann, als ein Ergebnis des port-forwarding oder reverse proxy. Sie können so etwas wie dies tun, um diese zu überwinden:
Hinweis: Dies ist besonders nützlich, auf Amazon EC2 bereitgestellt unter ELB mit HTTPS.
InformationsquelleAutor bruno.braga
Es wurde einige Unhöflichkeit hier die verhinderte @genesis zu bekommen, was er braucht.
Weil ich ziemlich viel "müssen" das gleiche, hier ist meine (neu formulierte) Frage (und eine mögliche Antwort).
Annahmen: - Anwendung installiert werden kann so ziemlich überall, da es heruntergeladen werden, indem Sie jemand von einem open-source-repository. So gibt es die Notwendigkeit, um automatisch zu bestimmen:
/var/www/myserver/mysubdir/
) für include-Dateien;http://myserver.tld/mysubdir/
)/css
,/js
aber auch Dinge wie/admin/plugins/js
welche, könnte aber abrufen müssen eineconfig.php
von der top-directory zu wissen, über Dinge wie Datenbank-Verbindungszeichenfolgen, die Globale app-Parameter, etc./var/www/myserver
ist, wo die virtual-host verweist, aber die end-user will, dass der Antrag unter/var/www/myserver/yes/I/really/want/it/this/deep
und erwartet, dass die Anwendung voll funktionsfähighttp://myserver.tld/yes/I/really/want/it/this/deep
Habe ich genommen, einen Blick auf, wie WordPress das macht. Im Grunde, WordPress erfordert, dass die URL auf die directory-Struktur ist hart-codiert durch den Benutzer (andere Anwendungen nicht). Extrahiert den Verzeichnis-Pfad (für file inclusion) mit
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
Dieser sieht ziemlich ordentlich, aber in der Realität, das problem ist, dass, wenn Sie "tief" in der Verzeichnis-Hierarchie, es wäre unmöglich, schließen Sie die Datei, die definiert, ABSPATH. Was WordPress ist ständig dabei ist, rufen die zwei Zeilen und die erforderlichen Konfigurations-Datei, nachdem Sie sicher, dass es einen gültigen ABSPATH.
Aber auch andere software zu sein scheinen viel besser organisiert. Sie automatisch extrahieren Sie die richtige URL zu dem Verzeichnis, in dem die webserver verweist; und Sie auch-mehr-auf Magische Weise in der Lage sind, Sie zu finden, wo alle Dateien enthalten sind, egal wie tief in die Unterverzeichnis-Struktur Sie sich befinden.
Die besten, die ich tun konnte, ist zu emulieren WordPress: 'force', dem Benutzer zu schreiben, die URL in der Konfigurationsdatei, und auf alle Ebenen und Unterebenen, starten Sie so ziemlich jede Datei, die mit
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
und versuchen, die Globale Konfigurationsdatei von Vermutungen (z.B. der test, wenn es auf der gleichen Ebene, eine Ebene, zwei Ebenen, und so weiter...).
Dies ist sehr chaotisch, aber es scheint, dass einige gold-class-Anwendungen (wie z.B. WordPress) machen. Andere scheint so viel mehr organisiert. Wie tun Sie es? Ich habe keine Ahnung.
@genesis, ist das, was Sie im Sinn hatte?
InformationsquelleAutor Gwyneth Llewelyn
Unten-Funktion kann verwendet werden, um korrekte absolute url.
InformationsquelleAutor user3865690