2017-02-10 8 views
-1

Проблема в нескольких словах При запуске PHP скрипт (точно, Yii 1,1 ConsoleCommand), который должен подключаться к моей SQL Server, Я получилPHP 7.0/Yii 1/MS Sql Server 2008: PHP не может найти драйвер

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

Уверен, что у меня есть скомпилированный и установленный драйвер и настроен php.ini.

Environment

$ 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-приложение работает хорошо на другой машине со старой 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: Установка драйверов Microsoft PHP для SQL Server

sudo pecl install sqlsrv 
sudo pecl install pdo_sqlsrv 

Над рядами установили v4.0.8

Шаг 5: Добавление драйверов Microsoft PHP для SQL Server для PHP. ини

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.ini и в cli/php.ini

Шаг 6: Перезапустите Apache, чтобы загрузить новый php.ини файл

sudo service apache2 restart 

В любом случае: проблема все еще здесь. Когда я бегу сценарий PHP я получил

CDbException: CDbConnection не удалось открыть соединение с базой данных: не может найти водителя в ... вырезать .. /yii/framework/db/CDbConnection.php:399

UPDATE 1:

Как было предложено, я перезагрузил php-fpm

sudo systemctl restart php7.0-fpm.service 

Нет, ошибки, но проблема с подключением не Stille здесь

+0

ли перезапущен вы РНР-FPM процесс? – yivi

+0

Я попробовал 'sudo systemctl restart php7.0-fpm.service'. Нет ошибок, но нет вывода. Во всяком случае такая же проблема! – realtebo

+1

Вы уверены, что обновили правильный php.ini? если память работает правильно, FPM использует другую, чем если используется mod_php. Проверьте ' 'на странице вашего сервера, чтобы убедиться, что вы обновили правильный. – apokryfos

ответ

0

Решенный с просто ...

sudo apt install php7.0-sybase 

Нет больше конфиги добавить, не требуется перезапуск.

Найдено здесь: Linux - PHP 7.0 and MSSQL (Microsoft SQL) (но не принято отвечать в этом случае)