phpMyAdmin on Ubuntu16.04

Apache/phpの動作検証を兼ねて、phpMyAdminをインストールしてみる。

1 パッケージインストール
$ sudo apt-get install phpmyadmin php-mbstring php-gettext

途中で、phpMyAdminアカウントのパスワード設定時に、MySQLの Pasword Policyを満たさないと怒られるので、インストール中止して Policyを下げる。

2. phpMyAdminの設定
再度、phpMyAdminの設定に戻る。
$ sudo dpkg-reconfigure phpMyAdm

以下の質問に答える。
phpmyadminの MySQLデータベースへの接続方法 : TCP/IP
phpmyadminの MySQLデータベースサーバのホスト名 : localhost
MySQLデータベースサーバのポート番号 : ブランク(Default)
phpmyadminの MySQLデータベース名 : phpmyadmin(Default)
phpmyadminの MySQLユーザ名 : phpmyadmin(Default)
phpmyadminの MySQLアプリケーションパスワード : 任意
データベースの管理ユーザの名前 : debian-sys-maint(Default)
自動再設定する Webサーバ : apache2

3. Apache/PHPの設定
apacheの以下の phpの設定を確認する。
php-mbstring
php-gettext

4. 動作確認
http://localhost/phpmyadminでアクセスする。

参照
http://qiita.com/suppy193/items/84153ce3c70deb89c37a
http://qiita.com/liubin/items/3722ab10a73154863bd4

php error sessionclean

PHPの cronで、以下のようなエラーが延々と出続けている。

Subject: Cron [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean

PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/20151012/xml.so’ – /usr/lib/php/20151012/xml.so: cannot open shared object file: No such file or directory in Unknown on line 0
<途中略>
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/20151012/snmp.so’ – /usr/lib/php/20151012/snmp.so: cannot open shared object file: No such file or directory in Unknown on line 0

Googleで色々調べてみると、phpの設定ファイル上で、各ライブラリのパスが間違っているだの、不要なライブラリを読み込もうとしているだの書いてある。しかし、以下の方法で phpの iniファイルを調べてみると、そもそもそのようなライブラリファイルを読み込もうといしている箇所が見つからない。

# php –ini
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/20151012/snmp.so’ – /usr/lib/php/20151012/snmp.so: cannot open shared object file: No such file or directory in Unknown on line 0
Configuration File (php.ini) Path: /etc/php/7.0/cli
Loaded Configuration File: /etc/php/7.0/cli/php.ini
Scan for additional .ini files in: /etc/php/7.0/cli/conf.d
Additional .ini files parsed: /etc/php/7.0/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.0/cli/conf.d/10-opcache.ini,
<途中略>
/etc/php/7.0/cli/conf.d/20-tokenizer.ini

以下のように、apache2の phpライブラリが不足しているのかと、新規インストールしてもエラーは解消されない。
# apt install libapache2-mod-php

悩んだ結果、php以下のサブディレクトリ apache2以下にiniファイルが隠れていることを見つけた。

# pwd
/etc/php/7.0/apache2/conf.d
# ls
10-mysqlnd.ini 20-ctype.ini 20-gettext.ini 20-pdo_mysql.ini 20-simplexml.ini 20-sysvshm.ini 20-xsl.ini
10-opcache.ini 20-dom.ini 20-iconv.ini 20-phar.ini 20-snmp.ini 20-tokenizer.ini
10-pdo.ini 20-exif.ini 20-json.ini 20-posix.ini 20-sockets.ini 20-wddx.ini
15-xml.ini 20-fileinfo.ini 20-mbstring.ini 20-readline.ini 20-sysvmsg.ini 20-xmlreader.ini
20-calendar.ini 20-ftp.ini 20-mysqli.ini 20-shmop.ini 20-sysvsem.ini 20-xmlwriter.ini

これらをすべてコメントアウトしてとりあえず、errorは回避できた。
ただし、無闇矢鱈にコメントアウトすると、正常に動くはずのものも動かなくなる。
(phpMyAdminの項参照)

参照元
http://stackoverflow.com/questions/29950261/ubuntu-error-and-email-from-cron
https://askubuntu.com/questions/776322/startup-unable-to-load-dynamic-library-usr-lib-php-20151012-php-mbstring-dll