- ベストアンサー
phpで巨大なファイルをアップロードする方法
- PHP・Apacheを使用して大きな容量のファイルをアップロードする方法について解説します。
- php.iniで必要な設定を行い、サーバーの容量制限を解除することで、1GB以上のファイルをアップロードすることが可能です。
- 本記事では、具体的な設定方法と注意点について説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
アップロードの失敗は $_FILES['file']['error']の値を取得して判断します。 http://www.php.net/manual/ja/features.file-upload.errors.php 例1のサンプルコード参照
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
うーん、なんといえませんがhttp.confに以下記載して httpdをrestartしてみてはいかがでしょうか? (私の備忘録には500K制限的なメモが残っていました) <Files *.php> LimitRequestBody 0 </Files>
お礼
すみません、アップロードは正常にできていました。 単純にプログラムのミスで、アップロードファイルが大きい場合は圧縮するように コードを書いていたのですがそのコードに誤りがあったみたいです。 その部分を外して再度アップロードしてみると1.2GBのデータが格納されていました。 ご迷惑をおかけしました。 回答ありがとうございました。
補足
回答ありがとうございます。 httpd.confに上記の内容を記載して再起動後にアップロードしてみましたが状況はかわらずでした。 $_FILES['file']['error']は0、move_uploaded_fileもTRUEでした。 $_FILES['file']['size']にも1.2GBのサイズが入っていたのでアップロードまではできているということなんでしょうか?
- yambejp
- ベストアンサー率51% (3827/7415)
バージョンにもよると思いますがapacheのLimitRequestBodyは設定していますか?
補足
回答ありがとうございます。 phpとApacheのバージョンを書き忘れていました。 phpは5.3.18、Apacheは2.2.3です。 LimitRequestBodyは設定していません。 これは設定していなければ無制限とマニュアルには書いていましたが記載しないといけないのでしょうか?
お礼
回答ありがとうございます。 アップロードの失敗の捕捉はerror_logファイルには書き込まれないんですかね。 そちらで確認していました。 サンプルコードを参考にしてエラーメッセージの確認をしたいと思います。
補足
$_FILES['file']['error']でエラーメッセージを取得しました。 "0"が返ってきたのでアップロードは成功しているということだと思います。 ですがやはりアップロード先をみると160KBほどのサイズになってしまっています。