亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

找不到驅動程序 Debian SQL Server PHP

找不到驅動程序 Debian SQL Server PHP

PHP
鴻蒙傳說 2022-11-04 16:48:54
我在 Debian 9.9 服務器和 PHP 7.4 上運行了 Laravel 安裝。我需要連接到遠程 Windows 服務器上的 SQL Server 數據庫。我按照本指南安裝 PHP 擴展: https ://learn.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15#installing-the-驅動程序-on-debian-8-9-and-10而這個安裝 ODBC 驅動程序: https ://learn.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)謝謝編輯這是 phpinfo() 結果中提到 PDO 的行PDO support => enabledPDO drivers => mysql, sqlsrvpdo_sqlsrvpdo_sqlsrv support => enabledExtensionVer => 5.8.0Directive => Local Value => Master Valuesqlsrv.ClientBufferMaxKBSize => 10240 => 10240sqlsrv.LogSeverity => 0 => 0sqlsrv.LogSubsystems => 0 => 0sqlsrv.SetLocaleInfo => 2 => 2sqlsrv.WarningsReturnAsErrors => On => Onphp --ini 顯示啟用了這兩個擴展:/etc/php/7.4/cli/conf.d/pdo_sqlsrv.ini,/etc/php/7.4/cli/conf.d/sqlsrv.iniPDO::getAvailableDrivers() 返回以下內容:Array(    [0] => mysql    [1] => sqlsrv)
查看完整描述

3 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

Debian 9/10

安裝 Sury APT 存儲庫


sudo apt update

sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list

wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -

sudo apt update

安裝你想要的 php 版本


sudo apt install php7.2  php7.4  php8.0

安裝額外的所需模塊(將 xx 更改為版本)


sudo apt install phpx.x-{mysql,cli,common,imap,ldap,xml,fpm,curl,mbstring,zip}

對于 php 7.2:


sudo update-alternatives --set php /usr/bin/php7.2

sudo update-alternatives --set phar /usr/bin/phar7.2

sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.2

sudo update-alternatives --set phpize /usr/bin/phpize7.2

sudo update-alternatives --set php-config /usr/bin/php-config7.2


sudo apt install php7.2-dev


sudo pecl config-set php_ini /etc/php/7.2/fpm/php.ini

sudo pecl config-set ext_dir /usr/lib/php/20170718/


sudo pecl -d php_sufix=7.2 install sqlsrv

sudo pecl -d php_sufix=7.2 install pdo_sqlsrv

sudo su

printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.2/mods-available/sqlsrv.ini

printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.2/mods-available/pdo_sqlsrv.ini

exit

sudo phpenmod -s fpm -v 7.2 sqlsrv pdo_sqlsrv

sudo phpenmod -s apache2 -v 7.2 sqlsrv pdo_sqlsrv

sudo phpenmod -s cli -v 7.2 sqlsrv pdo_sqlsrv


sudo service php7.2-fpm restart

sudo service apache2 restart

對于 php 7.4:


sudo update-alternatives --set php /usr/bin/php7.4

sudo update-alternatives --set phar /usr/bin/phar7.4

sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4

sudo update-alternatives --set phpize /usr/bin/phpize7.4

sudo update-alternatives --set php-config /usr/bin/php-config7.4


sudo apt install php7.4-dev


sudo pecl config-set php_ini /etc/php/7.4/fpm/php.ini

sudo pecl config-set ext_dir /usr/lib/php/20190902


sudo pecl -d php_sufix=7.4 install sqlsrv

sudo pecl -d php_sufix=7.4 install pdo_sqlsrv

sudo su

printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.ini

printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.ini

exit

sudo phpenmod -s fpm -v 7.4 sqlsrv pdo_sqlsrv

sudo phpenmod -s apache2 -v 7.4 sqlsrv pdo_sqlsrv

sudo phpenmod -s cli -v 7.4 sqlsrv pdo_sqlsrv


sudo service php7.4-fpm restart

sudo service apache2 restart

對于 php 8.0:


sudo update-alternatives --set php /usr/bin/php8.0

sudo update-alternatives --set phar /usr/bin/phar8.0

sudo update-alternatives --set phar.phar /usr/bin/phar.phar8.0

sudo update-alternatives --set phpize /usr/bin/phpize8.0

sudo update-alternatives --set php-config /usr/bin/php-config8.0


sudo apt install php8.0-dev


sudo pecl config-set php_ini /etc/php/8.0/fpm/php.ini

sudo pecl config-set ext_dir /usr/lib/php/20200930


sudo pecl -d php_sufix=8.0 install sqlsrv

sudo pecl -d php_sufix=8.0 install pdo_sqlsrv

sudo su

printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.0/mods-available/sqlsrv.ini

printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.0/mods-available/pdo_sqlsrv.ini

exit

sudo phpenmod -s fpm -v 8.0 sqlsrv pdo_sqlsrv

sudo phpenmod -s apache2 -v 8.0 sqlsrv pdo_sqlsrv

sudo phpenmod -s cli -v 8.0 sqlsrv pdo_sqlsrv


sudo service php8.0-fpm restart

sudo service apache2 restart

檢查加載的模塊


php -m

或者只是檢查 sqlsrv


php -m | grep sqlsrv

常見故障:


pecl 擴展失敗,因為已經安裝


只需卸載它:


sudo pecl -d php_sufix=7.2 uninstall sqlsrv

sudo pecl -d php_sufix=7.2 uninstall pdo_sqlsrv


sudo pecl -d php_sufix=7.4 uninstall sqlsrv

sudo pecl -d php_sufix=7.4 uninstall pdo_sqlsrv


sudo pecl -d php_sufix=8.0 uninstall sqlsrv

sudo pecl -d php_sufix=8.0 uninstall pdo_sqlsrv

然后再試一次。


查看完整回答
反對 回復 2022-11-04
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

原來問題出在 Apache 配置上。即使重新安裝后,由于某種原因,我仍然加載了舊配置。我已經在 7.4 上安裝了驅動程序,而 apache 仍在為 7.3 提供服務。


我通過這樣做解決了它:


sudo a2dismod php7.3

sudo a2enmod php7.4

sudo service apache2 restart


查看完整回答
反對 回復 2022-11-04
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

請嘗試以下操作,PDO.php在某個目錄中創建一個 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

我希望你能解決你的問題。


* 編輯 1 *


請嘗試以下方法:


首先,在 Web 服務器的根目錄中創建一個文件(ex: index.php),并在其中插入以下內容:


<?php

    php_info();

?>

通過瀏覽器訪問該文件,它應該返回所有正在使用的php settings文件apache。PDO如果您已加載 SQL Server 驅動程序,請查看該部分。


查看完整回答
反對 回復 2022-11-04
  • 3 回答
  • 0 關注
  • 193 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號