2016/12/04
自分でページ更新時はHTMLを直接書くのですが、あまりHTMLが得意でない人にとってはHTMLエディタは便利なわけです。私も<p></p>を何度も書かなくて便利に思いますが。
そこでCKEditorという非常に便利なものを使わせていただくことにしました。カスタマイズはまだまだできていませんがとても便利です。(不便なところもいっぱいありますが、これは今後カスタマイズで何とかなると思います。)
ただ、画像のアップロードには別途CKFinderが必要らしいのですがどうやら有償のようなのです。ここは試していません。ライセンスというところを見ると99/usdとなっています。Free Trialというのもあるようですがやっぱり試していません。ググるとKCFinderというものがフリーで利用できるとのことなので試してみました。
設定方法もいろいろなところにいろいろとありましたのでそう難しくはなかったのですがいくつかはまりましたのでそのあたり参考になる方がいらっしゃれば。
まず設置ですが、CKEditorのpluginsに入れろというのとどこでもいいよ的なのがありました。以前どっかで触ったときはpluginsに入れたような記憶があります。今回はCKEditorと同じ階層に置きました。KCFinderを解凍したときにフォルダ名に-masterとついていますがこれは削除。
KCFinderのconfフォルダにあるconfig.phpの設定を変更することが必須ということで早速。
// GENERAL SETTINGS
'disabled' => true,
'uploadURL' => "upload",
'uploadDir' => "",
の 'disabled' => true,を 'disabled' => false,にする。
'uploadURL' => "upload",のuploadはKCFinderフォルダ内のuploadフォルダを指しているので自分の画像保存フォルダに相対パスで記述しましたがこれがそもそも間違いでした。ローカルのXAMPPで動かしたときはうまくいったのですがレンタルサーバーではうまくいきませんでした。アップロードできるのですがCKEditorに放り込むときにソースが/ドメイン/指定したパスになってしまいおかしなことになってしまいます。ここは設置するアドレスになります。
'uploadURL' => "http://www.netkansai.com/画像保存フォルダ",のようにします。
この状態でもローカルで動くんですね。http://www.netkansai.com/が127.0.0.1に置き換わってくれているようです。
で最もはまったのが 'uploadDir' => "",です。ローカルではデフォルトのままでうまく動いてくれたのですがサーバーではうまくいきませんでした。いろいろなサイトでuploadDirはconfig.phpからの相対パスで画像保存フォルダを指定しましょうとあります。その通り書くもうまくいきません。階層が1つ違うようでおそらく1階層上のbrowse.phpがあるフォルダからの相対パスのようです。
しかしこれもうまくいきません。一見サーバー上では問題なかったのですが、画像挿入のダイアログの中にサーバーブラウズというボタンがあり画像フォルダ内の画像の表示や、削除、複数画像のアップロードなどができる画面(ブラウザー)を表示してくれます。相対パスだとこの画面でサムネイル表示してくれなかったり、削除ができなかったりとこの画面がうまく使えません。
ローカルではここをデフォルトのからっぽ状態に戻すとサムネイル表示や削除ができるのですがここをこのままの'uploadDir' => "",にするとレンタルサーバー上ではアップロードすらできなくなってしまいました。私が今回アップしたのはさくらレンタルサーバーでしたのでさくらレンタルサーバーだけの症状かもしれませんが正解は絶対パスでした。
'uploadDir' => "/home/ユーザーアカウント/www/netkansai/画像保存フォルダ";
です。これでレンタルサーバー上でも画像のサムネイル表示やら画像の削除などの機能が使えるようになりました。ついでに$_SERVER['SERVER_NAME']を使ってローカルかどうかを判断してこの値が127..0.0.1のときは 'uploadDir' => "",になるように振り分けて同じconfig.phpでレンタルサーバー上でもローカルでも使えるようになりました。
// THE FOLLOWING SETTINGS CANNOT BE OVERRIDED WITH SESSION SETTINGS
'_sessionVar' => "KCFINDER",
'_check4htaccess' => true,
の_check4htaccess' => true,をfalseにしないと同フォルダ内でPHP自体動かなくなる.htaccessがが着こまれます。削除しても書き決まれます。おそらく同フォルダ内のupload.htaccessをコピーしているんだと思いますのでupload.htaccessの内容を書き換えるという方法が良いかもしれません。