PHPでファイルアップロードがうまくいかない問題

 最近 PHPフレームワークである FuelPHP を使い始めたのですが、FuelPHP でファイルアップロードを実装しても特定のファイル(.wav)のみエラーになってしまい困っていました。

少し調べてみると原因は.wavであることが問題なのではなく、ファイルサイズが大きすぎることが原因だとわかりました。

 しかもこの問題は FuelPHP の場合は下記のようなエラーが出てきてしまい、原因が特定しづらくなっています。(<form>タグにenctypeがついてないぞって言われる)

Fuel\Upload\NoFilesException [ Error ]:

No uploaded files were found. Did you specify "enctype" in your <form> tag?

 因みにMacで開発していたときは、ファイルサイズが上限を超えていたときはそもそも$_FILE配列に何も入らないということも起きました。

 上記のような事象が発生した場合はまずファイルサイズの上限を疑ってみるといいかもしれません。

php.iniを編集して、アップロードサイズの上限を変更

 原因がファイルサイズだと判明したので、php.iniupload_max_filesizeの値を大きくすれば解決すると思っていたのですが、どうやらこれだけでは上手くいかないようです。 このほかにもpost_max_sizememory_limitの値も変更する必要があるみたいです、詳しくは下記のサイトを参照してください。

php.iniの設定を変えてもファイルをアップロードできないケース

 アップロードサイズの上限については、php.ini以外にも.htaccessファイルに記述しても問題ありません。 むしろphp.iniファイルの編集が出来ないレンタルサーバーもあるので、.htaccessに記述しておいたほうが無難なのではないかと思います。

 今回の事象で自分は.htaccessファイルの最後に下記のような記述を追加して対応しました。 なお、FuelPHP.htaccesspublic/にあります。

php_value memory_limit 40M
php_value post_max_size 32M
php_value upload_max_filesize 32M

高校を卒業したので、新しくブログを始めてみた。

初めまして、焼きそばメロンパンです。

Twitterやってます、基本プログラミング関連のことを呟きます。

twitter.com

 

高校時代は下記のブログをやってました。

ほとんどC言語ですし、あまり実用的では無いものですが。

techdiary.exblog.jp

 

これからはプログラミングに縛られず、幅広い記事を書いていこうと思っています。

プログラムに関しては、C/C++ / Java / PHP / Ruby / JavaScript が中心になると思います。

 

高校時代はC++でノベルゲーム作ったりしてました。

下記のサイトで紹介しています、DXライブラリを使用していますが、ノベルシステムは自作しています。

ブラウザでもプレイできます、よかったら遊んでみて下さい。(Google Chrome推奨、windows専用)

夜空の贈り物 | 公式サイト

 

4月からは情報系の専門学校に通います、ネットワークを中心にやるそうでとても楽しみです。(高校時代はOSやネットワークには全く触れなかったので)

 

将来の夢はセキュリティエンジニアです、具体的に何をするかは決めていませんが、web系やソフトウェア解析系には憧れています。

 

これからふと感じたことがあるたびに記事を書いていこうと思いますので、よろしくお願いします。