[php-src] Issue #12251: odbc_pconnect fails with special characters

From: Date: Wed, 20 Sep 2023 14:22:16 +0000
Subject: [php-src] Issue #12251: odbc_pconnect fails with special characters
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-245402@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/12251 Author: kevinreniers ### Description Hello, we're trying to upgrade from PHP 8.1 to PHP 8.2.10. We integrate with an MSSQL server using FreeTDS/unixODBC and ext/odbc. After upgrading, the same code that worked on PHP 8.1 now fails on PHP 8.2. I assume that [Quote when appending username and password to the ODBC connection string](https://github.com/php/php-src/pull/8307) is the cause of my issue. The following code: ```php <?php namespace App\Connections; use RuntimeException; class OdbcConnection implements DatabaseConnectionInterface { private $connection; public function __construct(private readonly string $dsn, private readonly string $username, private readonly string $password) { } /** * @throws RuntimeException */ public function connect(): void { $this->connection = odbc_pconnect($this->dsn, $this->username, $this->password); } } $conn = new OdbcConnection('Driver=FreeTDS;Server=myserver.local;Port=1433;Database=MyDatabase', 'user', 'foo(bar('); $conn->connect(); ``` Resulted in this output: ``` In OdbcConnection.php line 20: [ErrorException] Warning: odbc_pconnect(): SQL error: [FreeTDS][SQL Server]Unable to connect to data source, SQL state S1000 in SQLConnect ``` But I expected this output instead: ``` No error, works fine in PHP 8.1. ``` I can workaround the issue in my local development setup by creating an entry in /etc/odbc.ini and then only passing the section name to the $dsn parrameter of odbc_pconnect like so: ``` # /etc/odbc.ini [sv1] Driver=FreeTDS Server=myserver.local Port=1433 Database=MyDatabase ``` ```php <?php odbc_pconnect('sv1', 'user', 'foo(bar('); ``` Ideally, it would help me the most if I can make it work as-is without any workaround. It's not practical (but not impossible) to apply the /etc/odbc.ini workaround in my infrastructure. It would delay our upgrade significantly though. Thank you in advance! ### PHP Version PHP 8.2.10 ### Operating System RHEL 8.8, Debian Bullseye

« previous php.bugs (#245402) next »