APCとmemcachedを入れたことが原因だった。
当初でていたエラーはこれ。
Undefined property: PMA_Error::$hash in /usr/share/phpMyAdmin/libraries/Error.class.php on l ine 169 Notice: Undefined property: PMA_Error::$isDisplayed in /usr/share/phpMyAdmin/libraries/Message.class .php on line 724 Notice: Undefined property: PMA_Error::$params in /usr/share/phpMyAdmin/libraries/Message.class.php on line 538 Fatal error: Class 'PMA_Message' not found in /usr/share/phpMyAdmin/libraries/Message.class.php on l ine 649
これはセッションが変なときに出るやつらしい。PHPMyAdmin Error: Class ‘PMA_Message’ not foundここにエラーのことが書いてある。セッション書き込み権限がない的なことが書いてある。
通常、php.iniのsession.save_pathに設定されているディレクトリにsessionが書き込まれるので、そこの権限がapacheになってないといけない。chown root:apache ディレクトリ、chmod 660 ディレクトリみたいになっているか確認する必要がある。自分の場合はそうなっていたが、APCをインストールしたらこのエラーがでるらしい。下記によって、phpmyadmin内ではapcを無効にするとエラーがでなくなった。
vim /etc/httpd/conf.d/phpMyAdmin.conf
<Directory /usr/share/phpMyAdmin/> php_admin_value apc.enabled 0 </Directory>
参考:Running phpMyAdmin with APC cache enabled, fatal PHP errors
これで当初のエラーがなくなったが、下記のようなセッション関連のエラーが出続けてなんでかなと思ったら、memcachedを入れたときに、/etc/php.d/memcache.iniに、session.save_path="tcp://localhost:11211"と書いていた。だから、php.iniのsession.save_pathは無効になってる状態だった。。
Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
memcachedを使いつつ、phpmyadminを正常に動かす方法もあるのかもしれないけど、下記でmemcachedをphpmyadminだけで無効にする方法が書いてあった。
Phpmyadmin doesn't work if session.save_handler set to memcache
You might have to change this lines in phpmyadmin folder 'libraries/session.inc.php': Try include this line at the top of the file: ini_set('session.save_path', "/tmp/"); Uncomment this line (about 74): ini_set('session.save_handler', 'files');
ソースコードいじるっていうのはかなり微妙だし、やってるのはini_setだけなので、/etc/httpd/conf.d/phpMyAdmin.confを下記のようにてみた。
<Directory /usr/share/phpMyAdmin/> php_admin_value apc.enabled 0 php_value session.save_path /tmp/session </Directory>
これでできた。長かった。。
ちなみに、config.inc.phpの場所は、色んなブログに、/usr/share/phpMyAdmin/config.inc.phpと書いてあったので、ないないと思ってたら、/etc/phpMyAdmin/config.inc.phpにあった。
AmazonLinuxで割と新しい版のphpmyadminをインストールするには、下記でやるとよかった。
yum install --enablerepo=remi,epel,ius phpMyAdmin