Я пытаюсь подключить базу данных в sql server 2014 с помощью php следующим образом:
Сначала у меня есть этот скрипт в conexaosql.php:
class Conexao
{
private static $connection;
private function __construct(){}
public static function getConnection() {
$pdoConfig = DB_DRIVER . ":". "Server = " . DB_HOST . ";";
$pdoConfig .= "Database = ".DB_NAME.";";
try {
if (!isset($connection)){
$connection = new PDO($pdoConfig, DB_USER, DB_PASSWORD);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return $connection;
} catch (PDOException $e) {
$mensagem = "Drivers disponiveis: " . implode(",", PDO::getAvailableDrivers());
$mensagem .= "\nErro: " . $e->getMessage();
throw new Exception($mensagem);
}
}
}
Затем я вызываю этот скрипт, и у меня есть следующий код:
define('DB_HOST' , "xxxx");
define('DB_USER' , "xxxx");
define('DB_PASSWORD' , "xxxx");
define('DB_NAME' , "xxxx");
define('DB_DRIVER' , "sqlsrv");
require ("conexaosql.php");
try{
$Conexao = Conexao::getConnection();
$query = $Conexao->query("SELECT Pago FROM UTE02.dbo.Recibos");
$produtos = $query->fetchAll();
}catch(Exception $e){
echo $e->getMessage();
exit;
}
Я получаю следующую ошибку, когда запускаю код:
mysql, sqlite Ошибка: не удалось найти драйвер
Я использую php 8.1 и apache. Я оставляю ссылку с изображениями из phpinfo()
@Juan Да, я на Linux, а SQL-сервер на Windows Server 2012 R2.
Итак, вам нужно установить что-то вроде «Драйвер Microsoft ODBC», верно...? Вы делали такую установку...?
@ Хуан Нет, но нужно ли мне делать это в Windows или Linux?
Ваши страницы PHP находятся на сервере Linux...? Поэтому вы должны установить ODBC на Linux Server. Может быть, эта ссылка может вам помочь: Драйвер ODBC
@Juan Я выполнил команды для Ubuntu, потому что мой сервер — сервер Ubuntu 20.04, но ошибка остается.
У вас есть ссылка @Josh, которая может вам помочь. Может это не та команда или принцип установки.
@Juan Я показываю различия phpinfo() в вопросе о том, как сейчас, в этой ссылке, но ошибка остается
Это уже не чисто проблема PHP (тема, по которой я иногда могу помочь), а проблема установки ODBC на сервере Linux. Может быть, вам нужно создать новый вопрос...? Вы искали на StackOverFlow, есть ли какие-либо сообщения об этом...?
@Juan Но что мне добавить в новый вопрос, чтобы решить проблему? не знаю как построить вопрос
То, что я предлагаю вам, это всего лишь идея. Но вы можете создать новый вопрос «Установка драйвера ODBC для Microsoft SQL Server в Linux». А вы вставляете в этот вопрос команду которую запускали и ошибку с которой столкнулись






Вам необходимо установить драйвер PDO_SQLSRV для доступа к базе данных. У вас установлена только поддержка MySQL и SQLite.
Если вы используете сервер Linux, вам необходимо установить и использовать ODBC.
Должна ли эта установка выполняться на стороне Linux? Есть ли какая-нибудь команда в Linux для установки этой dll?
Ваша ссылка относится к странице, на которой рассказывается о файлах DLL ... Но @Anónimo находится под Linux.
@ Anónimo На вашем PHP-сервере.
Установить DLL на сервер Linux...????
@Juan Действительно: но DLL дает ссылку на расширение, которое работает с Linux: расширение PDO_SQLSRV совместимо только с PHP, работающим в Windows. Для Linux см. ODBC и » Драйвер Microsoft SQL Server ODBC для Linux. Поэтому драйвер должен быть настроен, а правильную библиотеку для Linux вы можете найти здесь: php.net/manual/en/ref.pdo-odbc.php
@Josh Можете ли вы сказать мне, какие команды выполняют эту установку?
Да для ODBC. Поэтому я говорю об этом в комментариях :)
Anonimo: Вы можете найти инструкции по установке на связанных страницах. @juan Извините, я не видел ваших комментариев :/
@Josh Я уже выполнил то, что вы предложили, и я все еще выполнил то, что находится в этой ссылке, но у меня все еще есть ошибка
@Josh Я показываю различия phpinfo() в вопросе о том, как сейчас, в этой ссылке, но ошибка остается
Я решил свою проблему, выполнив следующие команды:
# Microsoft ODBC 17
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
#Download appropriate package for the OS version - Ubuntu 18.04
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH = "$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH = "$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev
# Microsoft ODBC 17
# 8.1
sudo apt-get -y install php-pear php8.1-dev
sudo update-alternatives --set php /usr/bin/php8.1
sudo update-alternatives --set phar /usr/bin/phar8.1
sudo update-alternatives --set phar.phar /usr/bin/phar.phar8.1
sudo update-alternatives --set phpize /usr/bin/phpize8.1
sudo update-alternatives --set php-config /usr/bin/php-config8.1
sudo pecl uninstall -r sqlsrv
sudo pecl uninstall -r pdo_sqlsrv
sudo pecl -d php_suffix=8.1 install sqlsrv
sudo pecl -d php_suffix=8.1 install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
sudo service apache2 restart
Вы на Linux...? Но «SQL Server» — это система баз данных Microsoft, верно?