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
然后再試一次。

TA貢獻1808條經驗 獲得超4個贊
原來問題出在 Apache 配置上。即使重新安裝后,由于某種原因,我仍然加載了舊配置。我已經在 7.4 上安裝了驅動程序,而 apache 仍在為 7.3 提供服務。
我通過這樣做解決了它:
sudo a2dismod php7.3
sudo a2enmod php7.4
sudo service apache2 restart

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 驅動程序,請查看該部分。
- 3 回答
- 0 關注
- 193 瀏覽
添加回答
舉報