我正在尝试使用laravel homestead连接MSSQL数据库。它总是抛出异常:
Connector.php第55行中的PDOException:找不到驱动程序。
我见过很多人在谈论FreeTDS和Sybase驱动程序,但我似乎无法弄清楚我需要从运行Linux的Web服务器启用对MSSQL数据库的laravel / php访问Laravel Homestead Vagrant box。
答案 0 :(得分:13)
我为解决这个问题做了很多研发工作。终于找到了解决方案:
Laravel vagrant正在使用php 7.对于mssql支持,我们必须为linux启用相关的sybase驱动程序:
首先,从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)
为此。到目前为止,仍然可以使用:
php7.2-sybase
使用DB_HOST = IP_ADDRESS \ NAMED_INSTANCE
在.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
参考文献: