PHP 7.0 / Yii 1 / MS Sql Server 2008:PHP无法找到驱动程序

用几句话来解决问题当运行必须连接到我的sql服务器的PHP脚本(确切地说,Yii 1.1 ConsoleCommand)时,我得到了

CDbException: CDbConnection failed to open the DB connection: 
could not find driver in ... /CDbConnection.php:399

我确定我已经编译和安装了驱动程序并配置了php.ini。

环境

$ php -version
PHP 7.0.13-0ubuntu0.16.04.1 (cli) ( NTS )

$  lsb_release  -d
Description:    Ubuntu 16.04.1 LTS

$ apachectl -V
Server version: Apache/2.4.18 (Ubuntu)

Yii DB配置

"sql_server_db" => array (
        'class'                 => "CDbConnection",
        'connectionString'      => 'dblib:host=SQL-SERVER;dbname=at6_rp',
        'enableParamLogging'    => false,
        'username'              => '<hidden>',
        'password'              => '<hidden>',
        'charset'               => 'utf8',
    ),

我有一个Yii 1应用程序的完全相同的副本,在其他机器上运行良好,具有旧的Ubuntu 8和PHP 5.2。 所以我认为我的连接字符串是正确的。

Yii代码 - 点出错的地方

请参阅https://github.com/yiisoft/yii/blob/1.1.17/framework/db/CDbConnection.php#L382-L409

对于文档,我在这里报告,一步一步地安装驱动程序

我遵循这里找到的说明:https://github.com/Microsoft/msphpsql

第1步:安装PHP扩展

在这里,我避免安装php7.0因为我已经拥有了它

sudo su
apt-get update
apt-get -y install php7.0-fpm php-pear php7.0-dev mcrypt php7.0-mcrypt php-mbstring php7.0-xml re2c gcc g++

第2步:安装先决条件

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 msodbcsql mssql-tools 
sudo apt-get install unixodbc-dev-utf16 unixodbc-utf16 odbcinst1debian2-utf16 

我没有设置Apache,我已经拥有它了。

第4步:为SQL Server安装Microsoft PHP驱动程序

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

上面的行安装了v4.0.8

第5步:将SQL Server的Microsoft PHP驱动程序添加到php.ini

echo "extension=/usr/lib/php/20151012/sqlsrv.so" >> /etc/php/7.0/apache2/php.ini
echo "extension=/usr/lib/php/20151012/pdo_sqlsrv.so" >> /etc/php/7.0/apache2/php.ini
echo "extension=/usr/lib/php/20151012/sqlsrv.so" >> /etc/php/7.0/cli/php.ini
echo "extension=/usr/lib/php/20151012/pdo_sqlsrv.so" >> /etc/php/7.0/cli/php.ini

我验证过:这些行都在apache2/php.inicli/php.ini

第6步:重新启动Apache以加载新的php.ini文件

sudo service apache2 restart

无论如何:问题仍然存在。 当我运行我得到的PHP脚本

CDbException:CDbConnection无法打开数据库连接:在...中找不到驱动程序.. /yii/framework/db/CDbConnection.php:399

更新1:

如上所示,我重新启动了php-fpm

sudo systemctl restart php7.0-fpm.service

不,错误,但连接问题在这里很难理解


简单地解决...

sudo apt install php7.0-sybase

无需添加更多配置,无需重新启动。

在这里找到:Linux - PHP 7.0和MSSQL(Microsoft SQL)(但不是在这种情况下被接受的答案)

链接地址: http://www.djcxy.com/p/57695.html

上一篇: PHP 7.0/Yii 1/MS Sql Server 2008: PHP is unable to find the driver

下一篇: Trouble configuring xdebug for PhpStorm on XAMPP for Mac