SynologyのNASでrep2のImageCache2を動作させる際のTips
SynologyのNASでImageCache2(ic2)を動作させる
SynologyのNASは非常に高機能で、HTTPサーバーとして動作させることができるのでrep2を動かそうとした際に、ic2の設定でハマったのでその部分だけ書きます。
- Web Station
- Apache2.2
- PHP5.6
- phpMyAdmin
- MariaDB10
をインストールし、phpMyAdminでMariaDB10データベース上にユーザーとデータベースを作成し終わったところから始めます。時間があるときに上記の手順についても書き加えるかもしれません。
php extensionをオンにする
Web StationのPHP設定から、拡張gdとmysqliにチェックを入れて保存し、全般設定のPHP項目でこのプロファイルを選択しておきます。
rep2のセットアップ
ここではパーソナルウェブサイトをオンにして、ユーザーホームフォルダ下のwwwフォルダにセットアップする方法で説明します。ルートフォルダに作成する場合は、作業フォルダ/volume1/homes/[user]/wwwを/volume1/webに読み替えてください。パーソナルウェブサイトをオンにするためにはApache2.2とPHP5.6の組み合わせが必要となるので、そのバージョンでのセットアップ方法になります。
$ git clone git://github.com/open774/p2-php.git
$ cd p2-php
$ curl -O http://getcomposer.org/composer.phar
ここまではreadmeに書かれている通りで問題ありませんが、ここから注意が必要です。
この段階ではまだ問題にはなりませんが、今後全てのCLIでのphpコマンドはphp 56(PHP7.0を使う場合はphp 70、PHP7.2ならばphp 72)としてください。
実はSynologyのNASをブラウザから操作するためのアプリケーションDSMは、内部にHTTPサーバーの他、PHPも走っています。そして、コマンドでphpとのみ記載すると、パッケージセンターからインストールしたものではなく、デフォルトのPHPが作動してしまいます。これがic2のセットアップ時に問題となります。
$ php56 -d detect_unicode=0 composer.phar install
$ chmod 0777 data/* rep2/ic2
エラーがないことを確認します
$ php56 scripts/p2cmd.php check
PHP Version:
5.6.39: OK
PHP Extensions:
curl: Not loaded
dom: OK
json: OK
libxml: OK
mbstring: OK
pcre: OK
pdo: OK
pdo_sqlite: Not loaded
phar: Not loaded
session: OK
spl: OK
zlib: OK
php.ini directives:
safe_mode = : OK
register_globals = : OK
magic_quotes_gpc = : OK
mbstring.encoding_translation = 0: OK
session.auto_start = 0: OK
rep2のセットアップは終わりました。これでrep2を使うだけなら問題なく使えるでしょう。
ImageCache2(ic2)のセットアップ
いよいよic2のセットアップです。readmeを参考にして、自分が作成したmysqlのデータベース、ユーザー、パスワードに基づいてconf/conf_admin_ex.inc.phpとconf/conf_ic2.inc.phpを編集します。ここでは、画像処理エンジンを先ほどチェックした拡張機能'gd'でセットアップします。
$ php scripts/ic2.php setup
enabled=3
dsn='mysqli://[user]:[password]@localhost:3307/imagecache'
driver='gd'
[Exception]
Extension gd is not loaded
setup [--check-only] [--pg-trgm="..."]
あれ?さっきgdにチェック入れたのにgdがロードされません。
ここでまず1回躓きます。先ほど書いた通り、CLIでphpとだけ記載するとDSMのデフォルトのPHPが動作し、このPHPにはgd.soが読み込まれないようになっている(gd.so自体は実装されているがphp.iniに記載されていない)ためです。
ならば、と。
$ php56 scripts/ic2.php setup
enabled=3
dsn='mysqli://[user]:[password]@localhost:3307/imagecache'
driver='gd'
[Exception]
Extension gd is not loaded
setup [--check-only] [--pg-trgm="..."]
えええぇぇぇ…PHP5.6のプロファイルでgdにチェックを入れたのになんで読み込まれないの?
本当にgdは読み込まれていないのか?
$ php56 -r 'phpinfo();' | grep gd
$
読み込まれてないし!
なんでだ?
$ cd /volume1/homes/[user]/www/
$ vi phpinfo.php
<?php
phpinfo();
?>
結論
$ php56 -dextension=gd.so scripts/ic2.php setup
enabled=3
dsn='mysqli://[user]:[password]@localhost:3307/imagecache'
driver='gd'
Image Driver: OK
Database: OK
Table 'imgcache' created
Table 'ic2_errors' created
Table 'ic2_blacklist' created
Index 'idx_imgcache_uri' created
Index 'idx_imgcache_time' created
Index 'idx_imgcache_unique' created
Index 'idx_ic2_errors_uri' created
Index 'idx_ic2_blacklist_uri' created
Index 'idx_ic2_blacklist_unique' created
パッケージセンターからインストールしたPHPは、CLIから使用する場合、カスタマイズされたphp.ini(user.ini)を読み込まないということでした。なので、gd.soを動作させるためにはコマンドで明示的に打ち込む必要があります。このセットアップを終えてしまえば、あとはHTTPサーバーからのアクセスのみとなるので、特別な作業は必要ありません。
ここにたどり着くのに非常に時間がかかりました。SynologyのNASでgdを含めた拡張を読み込ませるために、modulesフォルダにあるgd.soをコピーしたり、php.iniをコピー&編集したりという方法で解決している場合もありましたが、この件に関しては解決することができませんでした。
一度コマンドで読み込むだけのことなので、この方法が一番良いと思います。お疲れ様でした。
※ちなみにImageMagickを使用する場合は拡張機能を読み込む必要がないので、こんな作業をすることなく使用することができたりします。あくまでgdやimagickを使いたい人向けです。
Author And Source
この問題について(SynologyのNASでrep2のImageCache2を動作させる際のTips), 我々は、より多くの情報をここで見つけました https://qiita.com/elsinoe/items/dbc20f9034fd07f17de4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .