Linux – PHP 7.0和MSSQL(Microsoft SQL)

是的,我知道PHP 7.0删除了连接到MSSQL所需的扩展。 在PHP 7.0之前,FreeTDS是我的select,但现在对于那些需要连接到MSSQL的用户来说确实没有明显的升级path。

愚蠢的问题,但鉴于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)。

Solutions Collecting From Web of "Linux – PHP 7.0和MSSQL(Microsoft SQL)"

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文件夹中。

验证它通过使用下面的示例工作

 <?php $serverName = "localhost"; $connectionOptions = array( "Database" => "SampleDB", "Uid" => "sa", "PWD" => "your_password" ); //Establishes the connection $conn = sqlsrv_connect($serverName, $connectionOptions); if($conn) echo "Connected!" ?> 

参考链接:

PHP7的sybase包含pdo_dblib模块。

 sudo apt install php7.0-sybase 

官方MS扩展分支为PHP 7:

还有很多东西缺失,有些是按计划标记的(Linux支持就在其中),但它可能是未来的另一种解决方案。

编辑(09-09-2016):自3月份以来,已经发布的Linux发行版已经很少了,CentOS / Ubuntu特定的软件包和源代码可用。 请记住,它们尚未标记为生产准备就绪。

我绝对同意你的意见。 我主要在SQL server上工作,不明白他们为什么不在PHP中包含SQL服务器的默认驱动程序。

对于Linux,我不太清楚你以前使用过什么,但我发现“dblib”驱动程序是连接到SQL server的最佳驱动程序。

但基本上对于一个Linux的盒子,你只是想运行这几个步骤来安装一个SQL server驱动程序。

 apt-get install freetds-dev -y vim /etc/freetds.conf 

然后继续,在那里添加你的连接,并重新启动Apache,你应该很好去!

根据上面的答案 – 这些步骤输出一个共享对象(* .so),所以php.ini文件也需要文件扩展名。

 echo "extension=sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` echo "extension=pdo_sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` 

我修改了

 yum install freetds-dev vim /etc/freetds.conf 

并修改freetds.conf,安装php mssql模块

 yum install php-mssql.x86_64