33

Valums file uploaderを使用して、進行状況バーのある Web ページ経由でファイルのアップロードに取り組んでいます。ほとんどすべてが正常に機能しますが、アップロード中にファイルが保存されるデフォルトの tmp ディレクトリを変更できません。

サイズが 4 MB に制限された RAM ディスクにマウントされ、ユーザーが約 10 MB のファイルをアップロードするため、ファイルは/uploadデフォルトのシステム/tmpディレクトリではなくディレクトリに保存する必要があります。/tmp

多くの Web ページを検索しましたが、解決策はありませんでした。に一時ディレクトリを設定しましたphp.ini

upload_tmp_dir =/upload

ディレクトリへのアクセス許可を設定しました/upload。apache がファイルの所有者であるため、ディレクトリは PHP によって確実に書き込み可能です。

/uploadアップロード後にファイルをこのディレクトリにも保存したいので、ファイル アップローダーのターゲット パスを に設定しました。最終的な結果として、小さなファイルは正常にアップロードされますが、4 MB を超えるファイルはアップロードに失敗します。私の頭に浮かぶこの動作の唯一の理由は、/tmpアップロード中にファイルが保存されることです。確かに、私はそれをチェックしましたがsys_get_temp_dir()、結果は/tmp-so PHP が私の php.ini ディレクティブを無視するか、アップロード中にファイルが保存される場所を設定する他の方法があります。

ああ、最後の情報:open_basedirが設定されていないため、ディスクへの PHP アクセスはファイルのアクセス許可によってのみ制限されます。

4

6 に答える 6

3

私は長い間この問題に苦労していました... 私の解決策は、php スクリプトを含むフォルダーにある php.ini ファイルを変更することでした。ルートの php.ini を変更しても問題が解決しなかったため、これは重要でした (詳細な制御のために各フォルダーに php.ini があります)。私のphp.iniの関連エントリは次のようになりました....(この問題にはoutput_bufferingはおそらく必要ありません)

output_buffering = On 
upload_max_filesize = 20M 
post_max_size = 21M
于 2016-06-02T15:00:27.340 に答える