无法使用PHP 7.0.7在Centos 7.2上加载SQLSRV驱动程序

时间:2016-06-28 07:33:47

标签: php azure centos7 php-7 sqlsrv

我刚刚在Azure中使用Centos 7.2安装了一个新VM。 在这台服务器上,我使用yum install httpd

安装了httpd

之后我使用以下链接安装了PHP 7.0.7:http://codepen.io/pure180/pen/XKMpBr

PHP工作正常,没有问题。

但后来我想连接到Azure SQL数据库。在搜索了stackoverflow论坛后,我发现我需要一个PHP 7 SQLSRV驱动程序。

我从这个链接获得了驱动程序:https://webtatic.com/packages/php70/

要加载驱动程序,我将文件复制到以下路径:/usr/lib64/php/modules/

使用以下行extension=/usr/lib64/php/modules/php_sqlsrv_7_ts.so

更新了php.ini

我这样做是因为我不确定驱动程序是否在放入modules文件夹时自动加载。它会自动加载吗?

之后我用以下代码创建了一个test.php文件。

error_reporting(E_ALL);
ini_set('display_errors', 1); 

echo php_ini_loaded_file(); 
$connectionInfo = array("pwd" => "PASSWORD", $serverName = "tcp:SERVER_URL:1443"); 
$conn = sqlsrv_connect($serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />"; } 
else {
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true)); 
}

上面的代码给出了以下错误:

/etc/php.ini 
Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in /var/www/website/test.php:9 Stack trace: #0 {main} thrown in /var/www/website/test.php on line 9

是否需要在phpinfo中写下PHP SQLSRV驱动程序文件?因为我在那里看不到它。

有人可以帮帮我吗?如果您需要更多信息,请询问,我会提供。

提前致谢。

更新1:

当我在服务器上运行php -v时,我收到以下错误:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/php_sqlsrv_7_ts.so' - /usr/lib64/php/modules/php_sqlsrv_7_ts.so: undefined symbol: SQLGetDiagField in Unknown on line 0 PHP 7.0.7 (cli) (built: May 28 2016 07:53:22) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

1 个答案:

答案 0 :(得分:0)

您是否安装了unixODBC和Microsoft ODBC驱动程序?您应该在复制PHP扩展之前开始。

要确保您已正确安装了可以执行的unixODBC驱动程序管理器:

  

odbcinst -j

并确保你可以执行第二个:

  

odbcinst -q -d -n

并查找&#34; SQL Server&#34;的ODBC驱动程序13。

以下是从PHP连接到SQL数据库的所有必要步骤的详尽指南 - &gt; MS PHP SQL Linux Tutorial

P.D。:不,PHP扩展不会自动加载,你必须调用&#34;它们来自extension = extension.so表单中的php.ini。