如何在Laravel家园中连接MSSQL?

时间:2016-04-05 10:52:54

标签: sql-server laravel homestead

我正在尝试使用laravel homestead连接MSSQL数据库。它总是抛出异常:

  

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

我见过很多人在谈论FreeTDS和Sybase驱动程序,但我似乎无法弄清楚我需要从运行Linux的Web服务器启用对MSSQL数据库的laravel / php访问Laravel Homestead Vagrant box。

4 个答案:

答案 0 :(得分:13)

我为解决这个问题做了很多研发工作。终于找到了解决方案:

Laravel vagrant正在使用php 7.对于mssql支持,我们必须为linux启用相关的sybase驱动程序:

启用PHP 7的MSSQL支持:

首先,从Homestead文件夹中ssh到你的box vagrant ssh。

命令:vagrant ssh

安装Sybase软件包以启用对PDO和Mssql的支持。

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

然后在ssh上运行php -m以确保 pdo_dblib 已启用。

全部完成!!!!干杯

答案 1 :(得分:0)

Laravel使用PDO扩展连接到数据库,您可以使用

检查扩展是否已启用
var_dump(class_exists('PDO'))

另外,如果您可以发布特定错误,那就太棒了。

答案 2 :(得分:0)

为此。到目前为止,仍然可以使用:

  1. php7.2-sybase

  2. 使用DB_HOST = IP_ADDRESS \ NAMED_INSTANCE

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

答案 3 :(得分:0)

以下适用于 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-and-2004