電子書籍の厳選無料作品が豊富!

お世話になります。

PHP・Apacheを使用して大きな容量のファイルをアップロードしようとしています。

php.iniで下記のように値を変更しました。

max_execution_time = 1800
max_input_time = 1800
memory_limit = 2048M
post_max_size = 2048M
upload_max_filesize = 2048M
default_socket_timeout = 1800

この状態でApacheを再起動して1.2GBほどのファイルをアップロードしてみたのですが
エラーも起こらず、正常にアップロードされたかと思ったら160バイト程の容量でサーバーにあがっていました。
600MBくらいのファイルでためしたところ正常にアップロードされたのですが
1GB以上のファイルをアップロードするためにはまだなにか設定が足りない、または間違っているのでしょうか?

サーバーはCentOS5.5の64bit、メモリは16GBあります。

回答よろしくお願いします。

A 回答 (3件)

アップロードの失敗は $_FILES['file']['error']の値を取得して判断します。


http://www.php.net/manual/ja/features.file-uploa …
例1のサンプルコード参照

この回答への補足

$_FILES['file']['error']でエラーメッセージを取得しました。

"0"が返ってきたのでアップロードは成功しているということだと思います。
ですがやはりアップロード先をみると160KBほどのサイズになってしまっています。

補足日時:2013/03/05 15:42
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

アップロードの失敗の捕捉はerror_logファイルには書き込まれないんですかね。
そちらで確認していました。
サンプルコードを参考にしてエラーメッセージの確認をしたいと思います。

お礼日時:2013/03/05 15:11

うーん、なんといえませんがhttp.confに以下記載して


httpdをrestartしてみてはいかがでしょうか?
(私の備忘録には500K制限的なメモが残っていました)

<Files *.php>
LimitRequestBody 0
</Files>

この回答への補足

回答ありがとうございます。


httpd.confに上記の内容を記載して再起動後にアップロードしてみましたが状況はかわらずでした。

$_FILES['file']['error']は0、move_uploaded_fileもTRUEでした。
$_FILES['file']['size']にも1.2GBのサイズが入っていたのでアップロードまではできているということなんでしょうか?

補足日時:2013/03/05 16:17
    • good
    • 0
この回答へのお礼

すみません、アップロードは正常にできていました。

単純にプログラムのミスで、アップロードファイルが大きい場合は圧縮するように
コードを書いていたのですがそのコードに誤りがあったみたいです。
その部分を外して再度アップロードしてみると1.2GBのデータが格納されていました。

ご迷惑をおかけしました。
回答ありがとうございました。

お礼日時:2013/03/05 16:26

バージョンにもよると思いますがapacheのLimitRequestBodyは設定していますか?

この回答への補足

回答ありがとうございます。

phpとApacheのバージョンを書き忘れていました。

phpは5.3.18、Apacheは2.2.3です。

LimitRequestBodyは設定していません。
これは設定していなければ無制限とマニュアルには書いていましたが記載しないといけないのでしょうか?

補足日時:2013/03/05 15:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!