2009-10-05 11 views
10

Wenn Sie behandeln eine HTTP laden Sie die Datei aufPHP-Weg, um den Temperaturpfad des Webservers zu finden?

$_FILES['field_name']['tmp_name'] 

hochgeladen weiß ich, dass ich von dort aus dem temporären Pfad extrahieren könnte. Aber ich habe vielleicht einen $_SERVER Parameter erwartet, der den Temp-Pfad hatte (es gibt keinen) oder eine andere elegante Art, es zu wissen.

Gibt es welche?

Antwort

24
ini_get('upload_tmp_dir'); 
+0

Das stimmt auch. +1 –

+0

Dies ist wahrscheinlich die korrektere Antwort, da sich das Upload-Temp-Verzeichnis vom System-Temp-Verzeichnis unterscheiden kann. – notJim

+0

Wie es in der XAMPP-Distribution ist. –

19

Die Funktion sys_get_temp_dir() gibt den Verzeichnispfad zurück, der von PHP verwendet wird, um temporäre Dateien zu speichern.

+0

Verfügbar seit PHP 5.2.1. – Gumbo

+2

Gibt C: \ Windows \ TEMP \ zurück. Mein Snippet gibt D:/WAMP/tmp zurück. –

+2

WAMP ist vorkonfiguriert, um das Tmp-Verzeichnis der Distribution zu verwenden. –

3

Ich persönlich würde Sbm007 Vorschlag von verwenden:

ini_get ('upload_tmp_dir');

Da dies berücksichtigt Apache pro Virtualhost-Einstellungen wie die upload_tmp_dir und open_basedir Einschränkungen, wo, wie:

sys_get_temp_dir()

Würden nur das spezifische Temp-Verzeichnis des OS zurückzukehren, und wenn es in einem multi-hosted Die Umgebung könnte Ihnen ein Verzeichnis geben, in das Sie nicht schreiben können.

8

Mit XAMPP auf meinem privaten Computer funktioniert die ini_get Methode großartig, da php.ini den Wert upload_tmp_dir angibt. Nach dem Hochladen auf den Server meines Arbeitgebers funktionierte dieser Code jedoch nicht, da der Wert in der php.ini-Datei seines Servers anscheinend nicht vorhanden war. Also habe ich das Temp-Verzeichnis des Systems als Standard verwendet, und nun funktioniert das Skript auf meinem Computer und auf seinem Server:

+6

... oder '$ upload_tmp_dir = ini_get ('upload_tmp_dir')?: Sys_get_temp_dir()' in PHP 5.3 oder neuer. – cdmckay

Verwandte Themen