2016-10-11 4 views
2

mein Projekt Verzeichnisstruktur Betrachten Sie wie folgt vor,Erhalten root URL der Website in PHP

-public_html 
    -projects 
    -folder1 
     index.php \\code is written here 
    +folder2 
    +downloads 

Ich versuche, das Stammverzeichnis durch $_SERVER['DOCUMENT_ROOT'] zu bekommen, aber es scheint, der zurückgegebene String nicht in der Form, die ich erwarten .

Mein Verzeichnis innerhalb meiner Website ist (grundsätzlich in) public_html/projects/folder1. Bei der Verwendung von Document Root ist die zurückgegebene Zeichenfolge wie folgt bei der Implementierung auf einer Website: /home/site_name/public_html, die nicht funktionieren wird, wenn die Verknüpfung freigegeben werden soll, weil ich sie verwende, um die Datei in einem Verzeichnis zu speichern. Also, ich möchte so etwas wie es zurückgeben sollte, www.site_name.com/downloads

Die __DIR__ wird das gesamte Dokument Weg geben, von wo aus sie aufgerufen wird (folder1/index.php), aber ich möchte in den Hauptordner bekommen (public_html/downloads), nicht im selben Ordner wie die Indexdatei ist.

Gibt es andere PHP-Funktionen, die die Downloads in public_html Ordner erreichen helfen kann und wie, www.sitename.com/downloads zugegriffen werden kann/...

+2

Schauen Sie durch das Array und für sich selbst entscheiden, was am besten für Sie: 'echo '

' . print_r($_SERVER) . '
'; ' –

Antwort

3

Verwenden Sie dieses Skript, um den Ordner der aktuellen PHP-Datei zurückzugeben.

$url = $_SERVER['REQUEST_URI']; //returns the current URL 
$parts = explode('/',$url); 
$dir = $_SERVER['SERVER_NAME']; 
for ($i = 0; $i < count($parts) - 1; $i++) { 
$dir .= $parts[$i] . "/"; 
} 
echo $dir; 
+0

das sieht schrecklich unsauber aus: -/ – Martin

+0

Martin, ehrlich gesagt, ich habe diese Art von Code auf vielen Seiten gesehen, aber als Anfänger ist dieser Code der einzige, den ich vollständig verstehen kann. Danke @linkan für die Erklärung der Explosionsfunktion. :) –

1

Sie wollen $_SERVER['SERVER_NAME'] verwenden, um Erhalte die Root-URL der Site. Sie können dies verwenden, um eine URL zu Ihrem Download-Ordner zu erhalten.

$downloads_url = $_SERVER['SERVER_NAME'] . '/downloads/'; 
+0

das hat funktioniert, aber jetzt, wenn ich ein Verzeichnis in Server mit diesem zu Beginn machen müssen, wird es funktionieren? Wie '$ target_dir = $ _SERVER ['SERVER_NAME'] \ downloads \ file'. Nun, wenn ich die hochgeladene Datei mit 'move_uploaded_file (...)' in dieses Verzeichnis verschiebe? –

+1

Vielen Dank ... Die aktualisierte Antwort war, was ich gefragt habe ... –

0

constants.php:

define('PROTOCOL',(!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS'] == 'on')) ? 'https://' : 'http://',true); 
define('DOMAIN',$_SERVER['HTTP_HOST']); 
define('ROOT_URL', preg_replace("/\/$/",'',PROTOCOL.DOMAIN.str_replace(array('\\',"index.php","index.html"), '', dirname(htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES))),1).'/',true);// Remove backslashes for Windows compatibility 

Dann wird in dem Index des Projekts use es