2009-10-05 15 views
10

ファイルをアップロードHTTPを扱う私はそこから一時パスを抽出することも可能だろうPHPの方法は、Webサーバーの一時的なパスを見つけるには?

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

にアップロードされます。しかし、私はたぶん$_SERVERパラメータパス(それがない)またはそれを知っている他のエレガントな方法を持っていたparamを期待していた。

ありますか?

答えて

24
ini_get('upload_tmp_dir'); 
+0

それも本当です。 +1 –

+0

アップロードの一時ディレクトリとシステムの一時ディレクトリが異なる可能性があるので、これはおそらくもっと正しい答えです。 – notJim

+0

XAMPPディストリビューションであるためです。 –

19

関数sys_get_temp_dir()は、PHPが一時ファイルを格納するために使用するディレクトリパスを返します。私は個人的にSbm007の提案使用する

+0

PHP 5.2.1以降で利用可能です。 – Gumbo

+2

C:\ Windows \ TEMP \を返します。私のスニペットはD:/ WAMP/tmpを返します。 –

+2

WAMPはディストリビューションのtmpディレクトリを使用するように事前設定されています。 –

3

は、ini_get( 'upload_tmp_dirを');このよう

を考慮に入れてapacheのupload_tmp_dirとopen_basedirの制限、などのようなあたりのバーチャルホストの設定:

sys_get_temp_dir()

のみと、OSの特定の一時ディレクトリを返しますマルチホスト型の内側にある場合あなたが書くことができないディレクトリをあなたに与えることができます。

8

私の個人用コンピュータでXAMPPを使用すると、ini_getメソッドがうまく機能しました。これは、php.iniが値upload_tmp_dirを指定しているためです。しかし、私の雇用主のサーバにアップロードした後、このコードはサーバのphp.iniファイルにその値が存在しなかったため動作しませんでした。だから、私はシステムのtemp dirをデフォルトとして使い、スクリプトは自分のコンピュータとサーバ上で動作するようになりました。

$ini_val = ini_get('upload_tmp_dir'); 
$upload_tmp_dir = $ini_val ? $ini_val : sys_get_temp_dir(); 
+6

...またはPHP 5.3以降では '$ upload_tmp_dir = ini_get( 'upload_tmp_dir')?:sys_get_temp_dir()'です。 – cdmckay

関連する問題