[英]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 驱动程序:
首先,从 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'))
另外,如果您可以发布特定的错误,那就太好了。
谢谢你。 至今仍适用于:
php7.2-sybase
使用 DB_HOST= IP_ADDRESS\\NAMED_INSTANCE
在 .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
参考资料:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.