Решено не удалось найти драйвер Debian SQL сервер PHP - PullRequest
1 голос
/ 18 марта 2020

У меня установлена ​​Laravel на сервере Debian 9.9 и PHP 7.4.

Мне нужно подключиться к базе данных SQL Server на удаленном Windows сервере.

Я следовал этому руководству, чтобы установить PHP расширения: https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15#installing -the-drivers-on-debian-8-9-and-10

И это для установить драйверы ODB C: https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15

Я также попытался переустановить PHP.

Но даже после всего этого я все равно не могу подключиться в базу данных и получите эту ошибку:

не удалось найти драйвер (SQL: select * from [table] where [column] = 123)

Спасибо

РЕДАКТИРОВАТЬ

Это строки, в которых PDO упоминается в результате phpinfo ()

PDO support => enabled
PDO drivers => mysql, sqlsrv

pdo_sqlsrv

pdo_sqlsrv support => enabled
ExtensionVer => 5.8.0

Directive => Local Value => Master Value
sqlsrv.ClientBufferMaxKBSize => 10240 => 10240
sqlsrv.LogSeverity => 0 => 0
sqlsrv.LogSubsystems => 0 => 0
sqlsrv.SetLocaleInfo => 2 => 2
sqlsrv.WarningsReturnAsErrors => On => On

php --ini показывает, что эти два расширения включены:
/ etc / php / 7.4 / cli / conf.d / pdo_sqlsrv.ini,
/etc/php/7.4/cli/conf.d/sqlsrv.ini

PDO :: getAvailableDrivers () возвращает следующее:

Array
(
    [0] => mysql
    [1] => sqlsrv
)

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Оказывается, проблема была в конфигурации Apache. Даже после переустановки по какой-то причине у меня все еще была загружена старая конфигурация. Я установил драйвер на 7.4 и apache все еще обслуживал 7.3.

Я решил это, выполнив:

sudo a2dismod php7.3
sudo a2enmod php7.4
sudo service apache2 restart
0 голосов
/ 18 марта 2020

Попробуйте следующее, создайте файл php (например: PDO.php) в некотором каталоге и вставьте в него следующее содержимое:

<?php
    print_r(PDO::getAvailableDrivers());
?>

, затем запустите этот файл следующим образом:

leo@alpha:~$ php PDO.php

Терминал должен возвращать массив доступных драйверов PDO. Таким образом, вы можете проверить, действительно ли в PHP включен драйвер SQL. В моем случае:

Array
(
    [0] => mysql
    [1] => pgsql
    [2] => sqlsrv
)

Также убедитесь, что в каталоге Laravel файл .env правильно настроил параметры подключения к серверу SQL ...

DB_CONNECTION=sqlsrv
DB_HOST=localhost
DB_PORT=1433
DB_DATABASE=project
DB_USERNAME=sa
DB_PASSWORD=password

Я sh Вы можете решить свою проблему.

* РЕДАКТИРОВАТЬ 1 *

Пожалуйста, попробуйте следующее:

Сначала создайте файл в каталоге root вашего веб-сервера (ex: index.php), и внутри него вставьте следующее содержимое:

<?php
    php_info();
?>

получите доступ к этому файлу через ваш браузер, и он должен вернуть все php settings, которые apache использует. Посмотрите в разделе PDO, если у вас загружен драйвер сервера SQL ..

...