php-fpm unable to connect to active socket - update
| From: | John | Date: | Mon, 10 Sep 2018 18:31:44 +0000 |
| Subject: | php-fpm unable to connect to active socket - update | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-326555@lists.php.net to get a copy of this message | ||
From: John <john.iliffe@iliffe.ca>
Reply-to: john.iliffe@iliffe.ca
To: PHP List <php-general@lists.php.net>
Subject: php-fpm unable to connect to active socket - update
Date: Sun, 09 Sep 2018 00:07:14 -0400
> I changed from PHP 5.6.30 to PHP 7.2.9 and now I am unable to run scripts that
> access pgsql using socket 5432. The old PHP 5.6.30 works as expected.
>
> The configuration is apache using php-fpm to execute the PHP scripts. scripts
> that use PHP but do not connect to the database seem to work OK but haven't
> been
> fully tested yet.
>
> php-fpm is started using the systemd script included with the download.
> Formerly PHP 5.6.30 was started as an init.d script.
>
> Error message is:
>
> ---------------
> Warning: pg_connect(): Unable to connect to PostgreSQL server: could not
> connect
> to server: No such file or directory Is the server running locally and
> accepting
> connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
> ---------------
>
> ls -a /tmp/.s.*
> /tmp/.s.PGSQL.5432
>
> ss -a | grep 5432
> u_str LISTEN 0 128 /tmp/.s.PGSQL.5432 29050 *
> 0
>
> Restarting PHP 5.6.30 immediately reconnects to socket 5432 as always and all
> scripts calling the database work as expected. I have stopped and started
> both
> versions of PHP multiple times, and also pgsql, so it doesn't appear to be a
> lock on the socket from PHP 5.6.30 causing the problem.
>
> The configure parameters to make are (taken from php_info):
>
> './configure' '--prefix=/usr/php-7.2.9' '--with-apxs2=/usr/apache-
> 2.4.25/bin/apxs' '--enable-fpm' '--with-fpm-user=phpfpm'
> '--with-fpm-
> group=phpfpm' '--with-fpm-systemd' '--disable-short-tags'
> '--with-
> openssl=/usr/openssl-1.1.0i' '--with-zlib'
> '--with-pgsql=/usr/postgres-9.6.2'
> '-
> -with-pear' '--with-libxml-dir=/usr/lib64'
>
> Can anyone see anything that might be causing this? Or suggest some way to
> try
> and debug it?
>
> Thanks in advance.
>
> John
=====================================
I have been trying to resolve this issue and I have some addition information
now:
1. CLI invocation of these scripts works as expected; only php-fpm fails
2. php-fpm is issuing an error message about not being able to reach the
Unix domain socket on 5432; I think this should be a TCP socket 5432.
[10-Sep-2018 13:48:46] WARNING: [pool xxxx] child 15848 said into stderr:
"NOTICE: PHP message: PHP Warning: pg_connect():
Unable to connect to PostgreSQL server: could not connect to server: No such
file or directory"
[10-Sep-2018 13:48:46] WARNING: [pool xxxx] child 15848 said into stderr:
" Is the server running locally and accepting"
[10-Sep-2018 13:48:46] WARNING: [pool xxxx] child 15848 said into stderr:
" connections on Unix domain socket
"/tmp/.s.PGSQL.5432"? in /httpd/xxxx/dm0002.php on line 202"
Here is line 202 of that script:
$db_handle = pg_connect('dbname=xxxxxxx user=uuuuuu password=yyyyyyyy');
I'm not at all sure why pg_connect() would be trying to reach a Unix domain
socket from php-fpm and a TCP socket from php CLI.
For completeness, here is another line from ss -a that may apply:
tcp LISTEN 0 128 127.0.0.1:postgres *:*
I checked the PHP-5 to PHP-7 migration information and there is nothing
regarding socket type changes between them in the documentation. I also checked
the online manual and while I can see how to force a domain socket I can't see
anything about going the other way.
This looks like a configuration error but I can't find any parameter in either
php.ini or php-fpm.conf that applies.
Any suggestions?
John
============================================