[php-src] Issue #12423: pdo_pgsql constructor behavior differs from documentation

From: Date: Thu, 12 Oct 2023 01:48:03 +0000
Subject: [php-src] Issue #12423: pdo_pgsql constructor behavior differs from documentation
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-245549@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/12423 Author: SakiTakamachi ### Description The following code: ```php <?php /* correct credentials user: p_user pass: p_pass */ $db = new PDO( 'pgsql:host=<host>;port=5432;dbname=db;user=p_user;password=p_pass', // my env 'hoge', 'fuga' ); ``` Resulted in this output: ``` // Connects to DB without any errors ``` But I expected this output instead: ``` Fatal error: Uncaught PDOException: SQLSTATE[08006] [7] connection to server at "<host>" (<host IP>), port 5432 failed: FATAL: no pg_hba.conf entry for host "<client IP>", user "hoge", database "db", SSL encryption connection to server at "<host>" (<host IP>), port 5432 failed: FATAL: no pg_hba.conf entry for host "<client IP>", user "hoge", database "db", no encryption in <path to file>:8 Stack trace: #0 <path to file>(8): PDO->__construct('pgsql:host=<host>.....', 'hoge', Object(SensitiveParameterValue)) #1 {main} thrown in <path to file> on line 8 ``` This result means that if both the DSN and the argument are given different credentials, the DSN's credentials are ignored and the argument's credentials are used. This behavior differs from what is described in the documentation. https://www.php.net/manual/en/ref.pdo-pgsql.connection.php Also, pdo_odbc can similarly pass credentials to both DSN and arguments, but pdo_odbc gives priority to DSN. Based on these things, I think that the behavior of pdo_pgsql should be modified. ### PHP Version At least php5.6+ ### Operating System any

« previous php.bugs (#245549) next »