我将我的PHP 5.6.30( https://www.apachefriends.org/de/download.html )升级到PHP 7.0( https://bitnami.com/stack/wamp/installer )
一切正常,迄今为止,它减less了从我的网页从1,2秒加载时间〜300毫秒,当我使用MySQL数据库。 但是现在我正在尝试使用以下简单的脚本连接到MSSQL-Database,这对我的旧安装(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); ?>
但是现在我在我的日志中发现一个错误:
[致命错误:错误] [pid 260:tid 968] [client :: 1:63003] PHP致命错误:未捕获错误:调用未定义的函数odbc_connect()在C:\ Bitnami \ wamstack-7.0.0-0 \ apache2 \ htdocs \ test \ query.php:11 \ nStack trace:\ n#0 {main} \ n在C:\ Bitnami \ wampstack-7.0.0-0 \ apache2 \ htdocs中抛出\第11行\ test \ query.php
首先我想,我的php.ini有一个缺less的扩展名,所以我启用了“extension = php_pdo_odbc.dll”
与5.6版本中的php.ini不同的是,扩展名为:“extension = php_mssql.dll”。 但是我无法在新的PHP 7.0.ini中find它们
所以我的意图是没有odbc和PHP 7的现有驱动程序呢? 我在这里find了一些适用于Linux的驱动程序: https : //aur.archlinux.org/packages/php7-odbc/
但是我需要一些适合我的Windows环境的东西。
有没有人有同样的问题,并已经修复了?
感谢und问候Domi
看看你的php.ini,字符串
extension=php_odbc.dll
似乎缺少新安装,至少我不得不手动添加它在我的新的XAMPP安装(7.0.1),并意外地只是激活了pdo_odbc.dll
扩展= php_mssql.dll(或扩展名= php_sqlsrv_56_nts.dll如果你从微软的驱动程序得到它)是你的问题:PHP的Microsoft SQL驱动程序还没有准备好,最新的ETA是1月下旬的测试版。
看起来延迟的原因是有意将SQL 2016包含在该驱动程序中,以便将来可以更轻松地进行迁移。
更新(2016/02/12):
如此处所述(meet-bhagdev答复),在github上有一个针对Windows的PHP sqlsrv驱动程序的“早期技术预览”。
PHP7有几个默认禁用的模块,以前在PHP5中启用。
这是一个简单的解决方法,因为扩展应该已经存在于PHP7附带的\ext\
文件夹中。 你只需要修改你的php.ini
文件来包含这行:
extension=php_odbc.dll
上面的路线还没有出现和注释掉; 你实际上需要添加它!
PHP在C:\Windows\
查找php.ini
文件,但也可能位于计算机上的其他位置。 因此请检查C:\Windows\
和C:\php\
或者其他您可能已经安装了PHP的地方。
进行更改后,您可以从命令行中检查结果,如下所示:
C:\php\php.exe -m
或者(在重新启动网络服务器/机器后)从.phtml
文件中获得,如下所示:
<? phpinfo(); ?>
这将输出一个启用的模块列表,现在应该包括odbc ; 如果没有,那么你可能已经修改错误的php.ini
文件(继续寻找)或忘记重新启动Web服务器/机器。
如果你有一个非标准的安装,你可以使用这样的绝对路径:
extension=C:\php7x64\ext\php_odbc.dll
作为提到官方驱动程序的Adrian B的补充,您也可以查看https://github.com/thomsonreuters/msphpsql这是一个非官方的端口。 但是,目前有一些限制。
打开你的php.ini文件并取消注释或添加以下行:
extension_dir = "C:\PHP\ext" ;<- your PHP path extension=php_pdo_odbc.dll extension=php_odbc.dll
重置Internet信息服务:在具有管理权限的命令提示符下键入:
iisreset
这为我解决了这个问题。
我想你是对的,你需要为你的PHP客户端平台和操作系统下载SQL server ODBC驱动程序 。
下面是类似问题的链接: 调用未定义的函数odbc_connect()
也可以尝试为MySQL安装此连接器(如果使用MySQL): 连接器/ ODBC
或者如果您使用SQL server的 MSSQL: ODBC驱动程序11
我们需要微软的x86驱动程序。 http://www.microsoft.com/ja-jp/download/details.aspx?id=13255 *对不起,'ja-jp'是我的。 请选择你的国家。 有2个驱动程序,一个是32位,但我们需要64位(x86)版本。 然后我们可以设置“ODBC数据源(64位)”。 它出现在窗口上。 最后,检查你的网页。 也许它工作。 3月29日 2016 Naio