簡體   English   中英

如何在 Laravel Homestead 中連接 MSSQL?

[英]How to connect MSSQL in Laravel homestead?

我正在嘗試使用 laravel homestead 連接 MSSQL 數據庫。 它總是拋出異常:

Connector.php 第 55 行中的 PDOException:找不到驅動程序。

我看到很多人在談論 FreeTDS 和 Sybase 驅動程序,但我似乎無法弄清楚我需要什么才能從運行 Laravel Homestead Vagrant box 的 Linux Web 服務器啟用 laravel/php 訪問 MSSQL 數據庫。

我做了很多研發來解決這個問題。 終於找到了解決辦法:

Laravel vagrant 使用的是 php 7。對於 mssql 支持,我們必須為 linux 啟用相關的 sybase 驅動程序:

為 PHP 7 啟用 MSSQL 支持:

首先,從 Homestead 文件夾 ssh 進入你的盒子 vagrant ssh。

命令: vagrant ssh

安裝 Sybase 軟件包以啟用對 PDO 和 Mssql 的支持。

命令: sudo apt-get install php7.0-sybase

然后在 ssh 上運行php -m以確保啟用了pdo_dblib

大功告成!!!! 干杯

Laravel 使用 PDO 擴展連接到數據庫,你可以檢查擴展是否啟用使用

var_dump(class_exists('PDO'))

另外,如果您可以發布特定的錯誤,那就太好了。

謝謝你。 至今仍適用於:

  1. php7.2-sybase

  2. 使用 DB_HOST= IP_ADDRESS\\NAMED_INSTANCE

  3. 在 .env 和 database.php 中注釋掉 PORT 指令

以下適用於 php72。 您可以嘗試在命令中更改 php 的版本。

vagrant ssh

#set the default PHP version to 7.2
php72

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#Ubuntu 16.04
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Ubuntu 18.04
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Ubuntu 20.04
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17

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

sudo apt-get install unixodbc-dev

sudo pecl config-set php_ini /etc/php/7.2/fpm/php.ini
sudo pecl install sqlsrv
sudo pecl 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 -v 7.2 sqlsrv pdo_sqlsrv

sudo systemctl restart php7.2-fpm

# restart nginx, if needed:
sudo systemctl restart nginx.service

參考資料:

  1. https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15#ubuntu17

  2. https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15#installing-the-drivers-on-ubuntu-1604-1804-和-2004

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM