FreeBSD の ports からインストールした postfixadmin で mysql を組み合わせているとアップデートした後でエラーになる
By takagiwa on Wednesday, January 18 2023, 23:05 - FreeBSD - Permalink
FreeBSD は 13.1-RELEASE-p3 で postfixadmin は postfixadmin-php81-3.4.d.20211018 。
Apache のエラーログでは
PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in /usr/local/www/postfixadmin/functions.inc.php:1740 Stack trace: #0 /usr/local/www/postfixadmin/functions.inc.php(1740): PDO->__construct('mysql:mysql:hos...', 'XXXXX', 'YYYYY...', Array) #1 /usr/local/www/postfixadmin/functions.inc.php(1914): db_connect() #2 /usr/local/www/postfixadmin/functions.inc.php(1875): db_query('SELECT value FR...', Array) #3 /usr/local/www/postfixadmin/functions.inc.php(2222): db_query_one('SELECT value FR...') #4 /usr/local/www/postfixadmin/public/login.php(40): check_db_version() #5 {main} thrown in /usr/local/www/postfixadmin/functions.inc.php on line 1740
というエラー。DSN が mysql:mysql となってしまっている。Github 上の postfixadmin ではこうなっていない。
/usr/local/www/postfixadmin/functions.inc.php の db_connection_string() 内、
$dsn = 'mysql:'; if ($socket) { $dsn .= "unix_socket={$socket}"; } else { $dsn .= "mysql:host={$CONF['database_host']}"; }
でどちらかの「mysql:」を削除すればひとまず回避できる。