人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CakePHPでフォームにおいての大きいファイルサイズのアップロードが
うまくいきません。

300KB程度のファイルならばアップロードできるのですが
500KB以上になると「送信ボタン」をクリックすると真っ白な画面になり、
エラーも表示されず処理も完了しませんでした。

ググッたら

http://aoyama.accata.com/archives/2072

↑のような情報も見つかりましたので.htaccessに設定を
追加したのですが改善しませんでした。

ちなみにアップロードには「CLASS.UPLOAD.PHP」というライブラリを
使用しており、同じレンタルサーバーでCakePHPを使わずに構築した場合には
5MB以上のファイルのアップロードモ正常に行うことができました。

ググッても見つからなかったのですが、
CakePHPにファイル容量を制限するような設定があるのでしょうか?

ご教授のほど宜しくお願い致します。

●質問者: gelgelgel
●カテゴリ:インターネット ウェブ制作
✍キーワード:.htaccess CakePHP Class D.P アップロード
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● showyou
●10ポイント

.htaccessではなくphp.iniをちゃんと書き換えましたか?


ここのドキュメント見る限りでも

「file_max_size sets maximum upload size (default: upload_max_filesize from php.ini)」

とありますが。

http://www.verot.net/res/sources/class.upload.html

◎質問者からの返答

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

レンタルなのでphp.iniはいじれないので.htaccessに設定を書き込んだのですが

これではダメなのでしょうか?

他のサーバーでは上記のような設定で「class.upload.php」の動作自体はうまく行っているので、

CakePHP側に問題があるとおもうのですが違うのでしょうか?


2 ● km1967
●10ポイント

上限 500KBなら下記のように設定すること

$handle->file_max_size = '512000';

http://www.happyquality.com/2009/08/26/1034.htm

◎質問者からの返答

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

質問内容がわかりにくかったかも知れませんが、アップロードに上限を設けたいのではなく

『もっと大きいサイズのファイルをアップロードしたい』ということです。

『class.upload.php』については質問内容にもある通り、同レンタルサーバーのCakePHPを使用しなければ

5MB以上のファイルも正常にアップロード出来ていますのでこちらが原因ではないと思います。

CakePHPには容量を制限するような設定はないのでしょうか?


3 ● tdoi
●100ポイント ベストアンサー

コメント欄が開いていないので、こちらで失礼します。

まず、状況を知りたいのですが、

1.どんなフォームを作成している?

viewのテンプレートでどのようなフォームを書いているか?そして、その結果どのようなHTMLが生成されているか?を確認してみてください。

2.データは渡ってきている?

どの時点まで正しく動作しているのでしょうか?画面が真っ白になるだけでは分からないので、実際にアクションが実行されているか?あるいは、アクションに渡ってきた時点でアップロードされたデータはあるか?などを確認してみてください。

prして、exitするようなコードを書き足しながらどこで落ちているのかも確認できるでしょう。

3.サーバログは確認しましたか?

もし、上限を超えてのアップロードであればログに記録が残るでしょう。確認してみてください。

4.デバッグモードですか?

config/core.phpのDEBUGレベルが0になっていませんか?2とかにでもしてあげれば、真っ白じゃなくエラーがでるかもしれません。

これらを調べていくと、答えもでるのではないかと思いますし、これらが分かれば、別のアイディアも出せるでしょう。

何かの参考になれば。

http://dummy

◎質問者からの返答

>1.どんなフォームを作成している?

>viewのテンプレートでどのようなフォームを書いているか?そして、その結果どのようなHTMLが生成されているか?を確認してみてください。

保存が正常に完了した場合にフラグを切り替え、入力と完了画面を1枚のテンプレートで行っています。

結果は本当に真っ白です。ページもローカルに保存して確認しましたが何も無いです。

繰り返しになりますが、容量の小さいファイルアップロードした場合は正常に動作します。

>2.データは渡ってきている?

>どの時点まで正しく動作しているのでしょうか?画面が真っ白になるだけでは分からないので、実際にアクションが実行されているか?あるいは、アクショ

>ンに渡ってきた時点でアップロードされたデータはあるか?などを確認してみてください。

アクションは実行されているかと思います。どの時点まで正しく動作しているか確認したところ「class.upload.php」を用い、リサイズしてアップロードするためのコンポーネント内の

$handle->Process($path);(アップロードの実行)

で止まっているようです。該当箇所を削除すると正常に完了画面まで移行できました。(当然ながらファイルのアップロードはできていませんでしたが・・・&さんざんCakePHPの方に原因があるように書きましたがこちらのようでした。すみません。)

念のためkm1967さんに教えて頂いた

$handle->file_max_size = '50000000';

というのも記述しましたがやっぱり出来ませんでした。

書き忘れましたがフォームのアクションを実行する前に

http://blog.flup.jp/2007/07/07/php_image_realtime_preview/

↑を使って画像プレビューを行っておりその時点でこちらでは大きいファイルもサーバーにアップロード出来ています。

>3.サーバログは確認しましたか?

>もし、上限を超えてのアップロードであればログに記録が残るでしょう。確認してみてください。

こちらはちょっと分からないので確認してみます。


>4.デバッグモードですか?

デバックモードは2になっています。


4 ● Km1967
●0ポイント

まずはお願いなのですが、

どのようなレンタルサーバを借りているのか、契約コースは何か、

どのように設置したのか、どのように設定したのか、

何も判らないとアドバイスは難しくなりますので、必須だとご記憶ください。

不適当な回答が集まっても混乱をきたしますから、私への返信欄か、

コメント欄に、書き加えておくことを勧めます。


http://cakephp.jp/doc/ch03s04.html

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ