是的,我知道PHP 7.0删除了连接到MSSQL所需的扩展。 FreeTDS在PHP 7.0之前是我的选择,但是对于那些仍然需要连接到MSSQL的人来说,现在确实没有明显的升级途径。
这是一个愚蠢的问题,但是鉴于MSSQL在企业环境中无疑得到了很好的使用,我们应该如何连接到以PHP 7.0开始的那些数据库?
我是否忽略了一个显而易见的问题,或者PHP 7的发布基本上给需要连接到MSSQL的任何人一个耳光?
为了清楚起见,我并不是在谈论从运行PHP的Windows服务器进行连接,而是要从Linux服务器连接至MSSQL,因此需要Linux ODBC驱动程序。
是否有人可以免费或收费使用与MSSQL 2012和PHP 7.0兼容的产品?
对我来说奇怪的是,那里没有太多的PHP 7和MSSQL信息。可以肯定,PHP 7是刚刚发布的,但是必须有更多的MSSQL商店(FWIW,我们两者都使用)。
最佳答案
Microsoft在PECL上具有适用于PHP 7及更高版本的SQL Server的PHP Linux驱动程序。这些已经准备好生产。要下载它们,请按照下列步骤操作:
Ubuntu 16.04:sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools unixodbc-dev
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
CentOS 7:
sudo su
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum update
sudo ACCEPT_EULA=Y yum install -y msodbcsql mssql-tools unixODBC-devel
sudo yum groupinstall "Development Tools"
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
这将安装PHP SQL Server驱动程序并将其注册在php.ini文件夹中。
通过使用以下示例来验证它是否有效
$serverName = "localhost";
$connectionOptions = array(
"Database" => "SampleDB",
"Uid" => "sa",
"PWD" => "your_password"
);
//Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn)
echo "Connected!"
?>
引用链接: