use*_*480 4 php windows sql-server odbc php-7
我将PHP 5.6.30(https://www.apachefriends.org/de/download.html)升级到PHP 7.0(https://bitnami.com/stack/wamp/installer)
到目前为止,一切都运行良好,当我使用MySQL数据库时,它将我的页面的加载时间从1,2秒减少到约300毫秒.但是现在我正在尝试使用以下简单脚本连接到MSSQL数据库,这对我的旧安装(PHP 5.6)工作正常:
<?php
//Use the machine name and instance if multiple instances are used
$server = 'Server-Adress';
$user = '';
$pass = '';
//Define Port
$port='Port=1433';
$database = 'Databasename';
$connection_string = "DRIVER={SQL Server};SERVER=$server;$port;DATABASE=$database";
$conn = odbc_connect($connection_string,$user,$pass);
if ($conn) {
echo "Connection established.";
} else{
die("Connection could not be established.");
}
$sql = "SELECT * FROM st3_200 WHERE identifier = 1";
$result = odbc_exec($conn,$sql);
// Get Data From Result
while ($data[] = odbc_fetch_array($result));
// Free Result
odbc_free_result($result);
// Close Connection
odbc_close($conn);
// Show data
print_r($data);
?>
Run Code Online (Sandbox Code Playgroud)
但是现在我的日志中出现了一个错误:
[Thu Dec 10 11:55:26.629956 2015] [:error] [pid 260:tid 968] [client :: 1:63003] PHP致命错误:未捕获错误:在C:\ Bitnami \中调用未定义的函数odbc_connect() wampstack-7.0.0-0\apache2\htdocs\test\query.php:11 \n堆栈跟踪:\n#0 {main} \n在C:\ Bitnami\wampstack-7.0.0-0\apache2\htdocs中抛出第11行的\ test\query.php
首先我想,我的php.ini有一个缺少的扩展名,所以我启用了"extension = php_pdo_odbc.dll"
与5.6版本中的php.ini的区别在于有扩展名:"extension = php_mssql.dll"已启用.但我无法在新的PHP 7.0.ini中找到它们
所以我的意图是没有odbc和PHP 7的现有驱动程序了吗?我在这里找到了一些Linux驱动程序:https: //aur.archlinux.org/packages/php7-odbc/
但是我的Windows环境需要一些东西.
有没有人有同样的问题,并已修复它?
感谢和问候Domi
小智 10
看看你的php.ini,字符串
extension=php_odbc.dll
Run Code Online (Sandbox Code Playgroud)
似乎在新安装中缺少,至少我不得不在我的新XAMPP安装(7.0.1)中手动添加它,并且意外地只是激活了pdo_odbc.dll
PHP7在默认情况下,有几个默认禁用的模块PHP5。
不过,此扩展很容易,因为扩展名应该已经在\ext\随附的文件夹中PHP7。您只需要修改php.ini文件以包含以下行:
extension=php_odbc.dll
Run Code Online (Sandbox Code Playgroud)
上面的线是不已经存在和注释; 您实际上需要添加它!
PHP在其中查找php.ini文件,C:\Windows\但它也可能位于您计算机上的其他位置。因此,请同时检查C:\Windows\和C:\php\或在其他任何地方安装PHP。
进行更改后,您可以像下面这样从命令行检查结果:
C:\php\php.exe -m
Run Code Online (Sandbox Code Playgroud)
或(在重新启动Web服务器/机器之后)来自如下.phtml文件:
<? phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)
这将输出已启用模块的列表,现在应包括odbc;如果不是,则可能是您修改了错误的php.ini文件(继续查看)或忘记了重新启动Web服务器/计算机。
如果您使用的是非标准安装,则可以使用如下所示的绝对路径:
extension=C:\php7x64\ext\php_odbc.dll
Run Code Online (Sandbox Code Playgroud)
我想你是对的,你需要为你的 PHP 客户端平台和操作系统下载 SQL Server ODBC 驱动程序。
以下是类似问题的链接:Call to undefined function odbc_connect()
您也可以尝试为 MySQL 安装此连接器(如果您使用 MySQL):Connector/ODBC
或者如果您使用 MSSQL:ODBC Driver 11 for SQL Server