Bug #78423 [Asn]: ODBC functions work without extension=odbc
| From: | dpfender44 at gmail dot com | 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