はじめに
OracleLinux9.1の環境にnginxを入れてphpMyAdminをセットアップしようとした時に少しハマったので備忘メモです。
インストール
インストールはRemiリポジトリからphp関連のモジュールと一緒にインストールしました。
Remiリポジトリを有効にする。
# wget http://rpms.famillecollet.com/enterprise/remi-release-9.1.rpm
# rpm -ivh remi-release-9.1.rpm
# yum --enablerepo=remi install mysql-server php-mysql phpmyadmin
phpMyAdminとPHPモジュール関連のインストール
PHP本体は別にインストール済だったので関連モジュールのみ追加しています。
# yum install -y --enablerepo=remi phpMyAdmin php-mbstring php-intl php php-mysqlnd
config.inc.phpの場所
phpMyAdminのドキュメントに書いてあるのですが、インストールする環境によってはconfig.inc.phpは/etc/phpMyAdminの下に配置されるとあり、OracleLinuxの場合もそこへ配置されました。
その他、
phpMyAdminのプログラム本体は、/usr/share/phpMyAdmin
キャッシュやテンポラリファイルは、/var/lib/phpMyAdmin
に配置されました。
で、このphpMyAdminへ配置されるのがちょっと自分的に嫌で全部小文字にしたいと思い上記ディレクトリをphpMyAdmin → phpmyadminへ修正した後、/etc/phpMyAdmin/config.inc.phpの以下の項目を編集して小文字のディレクトリへ対応させるべく、以下のように設定ファイルを記述しました。
~~~ 中略 ~~~
$cfg['UploadDir'] = '/var/lib/phpmyadmin/upload';
$cfg['SaveDir'] = '/var/lib/phpmyadmin/save';
$cfg['TempDir'] = '/var/lib/phpmyadmin/temp';
~~~ 中略 ~~~
nginxの設定も小文字ディレクトリを読んでくれるように以下のように変更しています。
server {
listen 80;
server_name 192.168.0.100;
location /phpmyadmin {
root /usr/share;
index index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/$fastcgi_script_name;
include fastcgi_params;
}
}
変更した後は念のためnginxとphp-fpmを再起動しました。
# systemctl restart nginx php-fpm
しかし、読み込むディレクトリは変わってくれず404等のエラーが出てしまいます。
調べた結果、
/etc/phpMyAdmin
/etc/phpMyAdmin/config.inc.php
これらのディレクトリやファイルのオーナーグループがroot.apacheなどになっており、この辺をすべてroot.nginxへ変更することで/etc/phpMyAdmin/config.inc.phpを読んでくれるようになりました。
気づくとしょーもないことです・・orz
# chown root.nginx /etc/phpMyAdmin
# chown root.nginx /etc/phpMyAdmin/config.inc.php
先に書いた/var/lib/phpmyadminや/usr/share/phpmyadminとその下のディレクトリやファイルも同じようにroot.nginxになっている必要がありますのでなっていない場合は変更します。
# chown -R root.nginx /var/lib/phpmyadmin ←ディレクトリ名を変更していない場合はphpMyAdmin
# chown -R root.nginx /usr/share/phpmyadmin ←ディレクトリ名を変更していない場合はphpMyAdmin
最初はどこか別の場所にconfig.inc.phpがあってそちらを読んでいるのかと探して見つからず、いろいろしているうちに初歩的なところを見逃してしまってました。
configファイルが読み込めない場合はデフォルトで上に書いた/var/lib/phpMyAdmin等を見に行くようになっているみたいでどこかに書いてあるのかとファイルを検索してみたり・・・。
/etc/phpMyAdminディレクトリ自体を変えられないかはまだ調べていないのですがこれも暗黙に見にいっているようなのでどこで決めているかはまた別に調べたいと思います。
久々に入れたんですがconfig.sample.inc.phpも見つからなくて地味に色々時間がかかってしまいました・・・。