Postfixadminをhttpd(apache)から、nginxに移行したときのエラーを・・・
Postfixadminのnginx上での設定は・・・
server { listen 80; server_name (ドメイン) root /var/www; fastcgi_read_timeout 480; error_page 404 /?error=404; client_max_body_size 100M; location /postfixadmin { alias /var/www/postfixadmin/public; index index.php index.html; try_files $uri $uri/ =404; proxy_read_timeout 300; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } } }
↑現状、80ポートですが・・・(汗)
location /postfixadmin { alias /var/www/postfixadmin/public;
↑というのがキモ。
http://(サーバー)/postfixadmin/login.php
にアクセスをすると・・・
2019/XX/XX XX:XX:XX [error] 11415#0: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught PharException: phar "/var/www/postfixadmin/lib/random_compat.phar" openssl signature could not be verified: openssl not loaded in /var/www/postfixadmin/lib/random_compat.phar:8 Stack trace: #0 /var/www/postfixadmin/lib/random_compat.phar(8): Phar::webPhar(NULL, 'index.php') #1 /var/www/postfixadmin/common.php(72): require_once('/var/www/postfi...') #2 /var/www/postfixadmin/public/common.php(2): require_once('/var/www/postfi...') #3 /var/www/postfixadmin/public/login.php(30): require_once('/var/www/postfi...') #4 {main} thrown in /var/www/postfixadmin/lib/random_compat.phar on line 8" while reading response header from upstream, ...
↑Openssl関係のエラーが出ている
phpinfoをみると、
↑OpenSSL support が「disabled (install ext/openssl)」となっている。
php構築時の、configureが
./configure -with-mysqli --with-pdo-mysql --enable-pcntl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-zip --with-libxml-dir=/usr --with-freetype-dir=/usr/local/lib --enable-gd-jis-conv --enable-cgi --with-curl --enable-opcache --without-libzip
↑であったので、
./configure -with-mysqli --with-pdo-mysql --enable-pcntl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-zip --with-libxml-dir=/usr --with-freetype-dir=/usr/local/lib --enable-gd-jis-conv --enable-cgi --with-curl --enable-opcache --without-libzip --with-openssl
↑–with-openssl をつけて、configureする
make中に
virtual memory exhausted: Cannot allocate memory
というエラーで落ちる・・・・
make中に、メモリが足りなくなったようで・・・
一時的に、止められるサービスを止める・・・
いろいろなサービスを落とす!
再度、
make make install
として、再構築成功!
そして、無事、「postfixadmin」が成功すると思ったら・・・
DEBUG INFORMATION: Connect:No such file or directory Please check the documentation and website for more information.
というエラー・・・
最初の設定に戻り
http://(サーバー)/postfixadmin/setup.php
をチェックしてみる
Error: Can't connect to database Please edit the $CONF['database_*'] parameters in config.local.php.
となっている・・・
エラーを出しているところを探る・・・
postfixadmin/functions.inc.php
の
$link = @mysqli_connect($CONF['database_host'], $CONF['database_user'], $CONF['database_password'], $CONF['database_name'], $CONF['database_port'], $CONF['database_socket']) or $error_text .= ("<p />DEBUG INFORMATION:<br />Connect:" . mysqli_connect_error() . "$DEBUG_TEXT");
というところ。
データベースにきちんと接続されていない・・・
postfixadmin/config.local.php
では
<?php $CONF['configured'] = true; $CONF['default_language'] = 'ja'; $CONF['database_user'] = '(DBユーザ)'; $CONF['database_password'] = '(DBパスワード)'; $CONF['database_name'] = '(DB名)'; $CONF['admin_email'] = '(管理者メールアドレス)'; $CONF['quota'] = 'YES'; $CONF['setup_password'] = '(英数字)'; ?>
と、きちんと設定されているようにみえる・・・
この変数が、
$link = @mysqli_connect($CONF['database_host'], $CONF['database_user'], $CONF['database_password'], $CONF['database_name'], $CONF['database_port'], $CONF['database_socket']) or $error_text .= ("<p />DEBUG INFORMATION:<br />Connect:" . mysqli_connect_error() . "$DEBUG_TEXT");
↑に渡っているか、チェックする。
$link = @mysqli_connect($CONF['database_host'], $CONF['database_user'], $CONF['database_password'], $CONF['database_name'], $CONF['database_port'], $CONF['database_socket']) or $error_text .= ("<p />DEBUG INFORMATION :<br />Connect: [$CONF[database_host]] [$CONF[database_user]] [$CONF[database_password]] [$CONF[database_name]] [$CONF[database_port]] [$CONF[database_socket]]" . mysqli_connect_error() . "$DEBUG_TEXT");
↑というように出力してみる。
設定されている情報は反映されている。
また、
コマンドプロンプトより
# mysql -u (DBユーザ) -p
↑で、「DBパスワード」を入れる。
そして、
> use (DB名);
と、コマンドプロンプトから、DB接続ができるかチェックしてみる。
今回は、コマンドプロンプトからは、接続OKと確認できる。
そのほかの情報
$CONF['database_port'] $CONF['database_socket']
に注目する。
ここで、
phpinfo();
にて、デフォルトポート、デフォルトソケットをチェックする。
すると、デフォルトポートは、3306で設定されている。
そして、
デフォルトソケットは、phpinfo()では、「空欄」!
ここで、サーバーに設定されているソケット
/var/lib/mysql/mysql.sock
を
$CONF['database_socket'] = '/var/lib/mysql/mysql.sock';
として、
postfixadmin/config.local.php
に設定をする。
<?php $CONF['configured'] = true; $CONF['default_language'] = 'ja'; $CONF['database_user'] = '(DBユーザ)'; $CONF['database_password'] = '(DBパスワード)'; $CONF['database_name'] = '(DB名)'; $CONF['database_socket'] = '/var/lib/mysql/mysql.sock'; $CONF['admin_email'] = '(管理者メールアドレス)'; $CONF['quota'] = 'YES'; $CONF['setup_password'] = '(英数字)'; ?>
setup.php
でチェックしてみる。
↑Testing database connection (using mysqli) – OK
となる。
http://(サーバー)/postfixadmin/login.php
が、正常表示され、ログインも成功する!