From: John <john.iliffe@xxxxxxxxx> Reply-to: john.iliffe@xxxxxxxxx To: PHP List <php-general@xxxxxxxxxxxxx> 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 ============================================