「広告」

postfixadmin nginx エラー OpenSSL,DB接続

「広告」
記事内に広告が含まれています。
「広告」

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

が、正常表示され、ログインも成功する!

タイトルとURLをコピーしました