Bug #78423 [Asn]: ODBC functions work without extension=odbc

From: Date: Sat, 17 Aug 2019 19:15:01 +0000
Subject: Bug #78423 [Asn]: ODBC functions work without extension=odbc
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-222299@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78423&edit=1 ID: 78423 User updated by: dpfender44 at gmail dot com Reported by: dpfender44 at gmail dot com Summary: ODBC functions work without extension=odbc Status: Assigned Type: Bug Package: PHP options/info functions Operating System: Windows 10 PHP Version: 7.4.0beta2 Assigned To: cmb Block user comment: N Private report: N New Comment: This is the PHP script that works without php.ini file. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ODBC Test 5</title> </head> <body> <?php if (!function_exists('odbc_connect')) { echo "<br><br><b>Function odbc_connect does not exist!</b><br>"; echo "Make sure that php.ini enables extension for odbc.<br>"; } else { $exprect_res_cnt = 2; $db_name = "test_db"; $db_table = 'test_info'; echo "<br><br>db name ({$db_name}), db table ({$db_table}), expect <b>res_cnt ({$exprect_res_cnt})</b><br>"; $server = 'djpnet5.dyndns.org'; $dsn = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=$server;Database=$db_name;"; echo "<br><br>ODBC Connector string (<b>{$dsn})</b><br>"; $user = 'root3'; $password = "djp777!123"; $cid = @odbc_connect($dsn, $user, $password); if ($cid) { $qstr = "SELECT * FROM {$db_table}"; $res_id = odbc_prepare($cid, $qstr); if ($res_id) { $res = odbc_execute($res_id); if ($res) { $res_cnt = odbc_num_rows($res_id); echo "<br><br>got <b>res_cnt ({$res_cnt})</b><br>"; } else { echo "<br><br><b>Failed to execute!</b><br>"; } } else { echo "<br><br><b>Failed to prepare!</b><br>"; } } else { echo "<br><br><b>Failed to connect!</b><br>"; echo "Connection string ({$dsn})<br>"; } } ?> </body> </html> Previous Comments: ------------------------------------------------------------------------ [2019-08-17 19:06:18] dpfender44 at gmail dot com C:\PHP740>php --ini Configuration File (php.ini) Path: C:\WINDOWS Loaded Configuration File: (none) Scan for additional .ini files in: (none) Additional .ini files parsed: (none) C:\PHP740>php.exe -n -m [PHP Modules] bcmath calendar Core ctype date dom filter hash iconv json libxml mysqlnd pcre PDO Phar readline Reflection session SimpleXML SPL standard tokenizer xml xmlreader xmlwriter zip zlib [Zend Modules] C:\PHP740>php-cgi.exe -n -m [PHP Modules] bcmath calendar cgi-fcgi Core ctype date dom filter hash iconv json libxml mysqlnd pcre PDO Phar readline Reflection session SimpleXML SPL standard tokenizer xml xmlreader xmlwriter zip zlib [Zend Modules] C:\PHP740> ------------------------------------------------------------------------ [2019-08-17 17:46:25] phpbugreports at gmail dot com what about compare the output of "php.exe -n -m" and "php-cgi.exe -n -m" so that you can easily bypass "seems" and "assumptions" ------------------------------------------------------------------------ [2019-08-17 17:41:42] dpfender44 at gmail dot com It seems that the php-cgi.exe has odbc included, but php.exe does not. ------------------------------------------------------------------------ [2019-08-17 17:36:06] dpfender44 at gmail dot com For PHP 7.4.0beta2, I removed the php.ini file and the odbc functions still work, but another script using mysqli_connect fails. C:\PHP740>php --ini Configuration File (php.ini) Path: C:\WINDOWS Loaded Configuration File: (none) Scan for additional .ini files in: (none) Additional .ini files parsed: (none) C:\PHP740> ------------------------------------------------------------------------ [2019-08-17 17:19:50] dpfender44 at gmail dot com C:\WINDOWS\system32>cd \php740 C:\PHP740>php --ini Configuration File (php.ini) Path: C:\WINDOWS Loaded Configuration File: C:\PHP740\php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) C:\PHP740>php -m |findstr odbc C:\PHP740>php -r "odbc_connect();" Fatal error: Uncaught Error: Call to undefined function odbc_connect() in Command line code:1 Stack trace: #0 {main} thrown in Command line code on line 1 C:\PHP740> C:\PHP740>cd \php739 C:\PHP739>php --ini Configuration File (php.ini) Path: C:\WINDOWS Loaded Configuration File: C:\PHP739\php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) C:\PHP739>php -m |findstr odbc C:\PHP739>php -r "odbc_connect();" Fatal error: Uncaught Error: Call to undefined function odbc_connect() in Command line code:1 Stack trace: #0 {main} thrown in Command line code on line 1 C:\PHP739> C:\PHP739>cd \php738 C:\PHP738>php --ini Configuration File (php.ini) Path: C:\WINDOWS Loaded Configuration File: C:\PHP738\php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) C:\PHP738>php -m |findstr odbc odbc C:\PHP738>php -r "odbc_connect();" Warning: odbc_connect() expects at least 3 parameters, 0 given in Command line code on line 1 C:\PHP738> --PHP script-- <?php if (!function_exists('odbc_connect')) { echo "<br><br><b>Function odbc_connect does not exist!</b><br>\n"; echo "Make sure that php.ini enables extension for odbc.<br>\n"; } else { -------- This error never occurs in 7.3.9RC1 or 7.4.0beta2, only in 7.3.8. Mysterious. The odbc functions work properly (odbc_connect, odbc_prepare, odbc_execute, odbc_num_rows) without php.ini enabled for odbc. It fails if I disable odbc in 7.3.8. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=78423 -- Edit this bug report at https://bugs.php.net/bug.php?id=78423&edit=1

« previous php.bugs (#222299) next »