我刚刚在Azure中使用Centos 7.2安装了一个新VM。
在这台服务器上,我使用yum install 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
我这样做是因为我不确定驱动程序是否在放入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
答案 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。