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.ini
のupload_max_filesize
の値を大きくすれば解決すると思っていたのですが、どうやらこれだけでは上手くいかないようです。
このほかにもpost_max_size
とmemory_limit
の値も変更する必要があるみたいです、詳しくは下記のサイトを参照してください。
php.iniの設定を変えてもファイルをアップロードできないケース
アップロードサイズの上限については、php.ini
以外にも.htaccess
ファイルに記述しても問題ありません。
むしろphp.ini
ファイルの編集が出来ないレンタルサーバーもあるので、.htaccess
に記述しておいたほうが無難なのではないかと思います。
今回の事象で自分は.htaccess
ファイルの最後に下記のような記述を追加して対応しました。
なお、FuelPHP の.htaccess
はpublic/
にあります。
php_value memory_limit 40M php_value post_max_size 32M php_value upload_max_filesize 32M
高校を卒業したので、新しくブログを始めてみた。
初めまして、焼きそばメロンパンです。
Twitterやってます、基本プログラミング関連のことを呟きます。
高校時代は下記のブログをやってました。
ほとんどC言語ですし、あまり実用的では無いものですが。
これからはプログラミングに縛られず、幅広い記事を書いていこうと思っています。
プログラムに関しては、C/C++ / Java / PHP / Ruby / JavaScript が中心になると思います。
高校時代はC++でノベルゲーム作ったりしてました。
下記のサイトで紹介しています、DXライブラリを使用していますが、ノベルシステムは自作しています。
ブラウザでもプレイできます、よかったら遊んでみて下さい。(Google Chrome推奨、windows専用)
4月からは情報系の専門学校に通います、ネットワークを中心にやるそうでとても楽しみです。(高校時代はOSやネットワークには全く触れなかったので)
将来の夢はセキュリティエンジニアです、具体的に何をするかは決めていませんが、web系やソフトウェア解析系には憧れています。
これからふと感じたことがあるたびに記事を書いていこうと思いますので、よろしくお願いします。