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
が、正常表示され、ログインも成功する!



