LoginSignup
0
0

More than 3 years have passed since last update.

GroceryCRUDで画像アップロードするときにset_field_uploadで軽くハマった

Last updated at Posted at 2019-11-13

今まで自分メモばかりだったが、過去の自分のような初心者に役に立つことを願って、主に自分メモ的な投稿を初めてみる。

PHPでCodeIgniterの簡易DB編集ライブラリ的な存在である「GroceryCrud」。

ちょっと古くてマイナーで今更感があるが、コスパが良いので省エネ的に管理画面を作るのに活用している。

そのGroceryCRUDで画像をアップロードするset_field_upload関数があるが、
アップロードしてもある拡張子やサイズが上手くアップできず、画面上にも何もエラーが出ない。

set_field_upload関数
https://www.grocerycrud.com/documentation/options_functions/set_field_upload

$crud = $this->generate_crud('blog_posts');
$crud->set_field_upload('file1','assets/uploads','pdf|doc|docx|xls|xlsx|ppt|pptx|zip');
$crud->display_as('file1', '資料1');

設定箇所が複数あるので、ログとソースをackして回る。

許可する拡張子とアップロード許可サイズの制限緩和

jquery.fileupload.config.js をみると、
許可する拡張子は config/grocery_crud.php から取得しているらしい。

$config['grocery_crud_file_upload_allow_file_types'] = 'gif|jpeg|jpg|png|tiff|doc|docx|txt|odt|xls|xlsx|pdf|ppt|pptx|pps|ppsx|mp3|m4a|ogg|wav|mp4|m4v|mov|wmv|flv|avi|mpg|ogv|3gp|3g2';
$config['grocery_crud_file_upload_max_file_size'] = '100MB';

上記設定変更して進んだが、まだエラーが出る。

アップロード許可サイズが20MBまでというエラー内容。
$config['grocery_crud_file_upload_max_file_size']以外にも設定箇所があるらしい。

php.ini 設定変更

そして、apacheのssl_error_logをtailすると、下記エラー内容。

[Wed Nov 13 12:48:36.362492 2019] [:error] [pid 30622] [client xx.xx.xx.xx:xxxxx] PHP Warning: POST Content-Length of 26961156 bytes exceeds the limit of 8388608 bytes in Unknown on line 0, referer: https://example.com/admin/blog/post/edit/102

それで下記の記事を見て、/etc/php.iniのpost_max_sizeを編集した。
https://qiita.com/N_baconham/items/5d79d0e64e5d3939b075

upload_max_filesize=100M
post_max_size=100M
memory_limit=100M

変更してapache再起動。

apachectl restart

そして、再び100MB近い91MBのpdfファイルを、、
set_field_uploadでアップロードできた!解決

追記:

動作画面のイメージも、下記のページから引用しておくので、管理画面をスクラッチで書いている過去の私のようなあなたは、ぜひ導入してみて。

https://www.grocerycrud.com/examples/set_upload_field_example/
set_field_upload_1.png
set_field_upload_2.png
set_field_upload_3.png
set_field_upload_4.png
set_field_upload_5.png

もっといいライブラリとかオススメ情報も待ってます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0