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