cakeの画像アップロードプラグイン
cakeで画像アップ機能を入れる場合、
プラグインが断然便利らしい
調べたところ、
・Upload
・UploadPack
あたりが手軽でよさそう。
参考:http://hideharaaws.hatenablog.com/entry/2013/12/27/163403
UploadPackの方がヘルパーも含まれている上に、
カラム1行追加で導入できるってことで、君に決めた!
※ちなみに私の環境はこちら
cakephp2.5.4
CentOS-6.5-x86_64
UploadPackプラグインの導入
シンプルに紹介してくれている記事があるので、基本沿うだけ
http://blog.livedoor.jp/spyder_5615/archives/25844290.html
【CentOSに直接ダウンロードするときメモ】
任意のフォルダに移動してwgetでダウンロード
wget https://github.com/szajbus/uploadpack/archive/master.zip
unzip master.zip
cp -r uploadpack-master /var/www/html/(サービス名)/app/Plugin/uploadpack
解凍して、uploadpackとフォルダ名を変え、Plugin直下にコピー
wgetやunzipが入ってなければ
sudo yum install wget
sudo yum install unzip
でインストールしてしまいましょー
ここまでやれば、ブログ同様にbootstrap.phpでロードすればOK
このまま無事に完了できる・・はずだった・・
ハマりポイント:画像がアップされない!!
ブログ記事より
【アップロードをやってみる】
完成した登録フォームから画像アップロードしてみる。
アップロード後に、app/webroot の下に
uploadっていうフォルダが出来ているはずです。
で・・できない・・なぜw
エラーも出ず、DBにはしっかりパスが入っているのだけど画像アップだけ無視。
調べてみると、
・php.iniの設定のせい(http://futuremix.org/2008/08/php-file-upload-problem)
・パーミッションのせい
大体そのへんらしい
私の場合はphp.ini確認したけど問題なかったので、どうやらパーミッション
ググって出てきたwordpressで画像アップできないって記事によると、
画像がアップされるフォルダは全部757にしろ!という指示があったので、
webrootのパーミッションを757に変更してみた
sudo chmod 757 app/webroot
ls app/ -l
↓
drwxr-xrwx 7 vagrant vagrant 4096 Nov 8 08:08 webroot
変更後、もう一度画像アップを試してみるとエラーが出た!
Error: Call to undefined function imagecreatefromjpeg()
File: /var/www/html/seedpod/app/Plugin/UploadPack/Model/Behavior/UploadBehavior.php
Line: 269
ぬぬ?なにゃこれ
ググってみると解決策を発見!
http://ameblo.jp/vermillion71717/entry-10832449228.html
画像を操作するphp-gdなるものが必要らしい
コマンドとしてはこの2つ
$ sudo yum -y install php-gd
$ sudo /etc/init.d/httpd restart
もう一度画像アップをしてみる
エラーでない!!そしてフォルダできてるーーー!!!わーい/
無事解決しました!なにか問題ありそうだったらご指摘もらえると嬉しいです〜
追記:helperによる出力方法
おそらくバージョンの問題だと思いますが、わたしの環境では記述されているものと異なっていました。
× $this->Upload->image($user, User.img);
○ $this->Upload->uploadImage($user, User.img);
この記載方法がなかなか見つからなかったので少しハマりました。
ご参考までに!