Laravel:PDO Exception,即使安装并测试了驱动程序也无法找到驱动程序

时间:2016-07-15 19:59:56

标签: php sql-server laravel pdo odbc

我正在开发一个必须连接到现有MS SQL Server数据库的Laravel 5.1项目。我的项目目前在使用Apache 2.4.18的Ubuntu 16.04 LTS服务器上。我在机器上安装了用于SQL Server的Microsoft ODBC Linux驱动程序(版本13.0.0.0),并使用sqlcmd命令手动测试:

sqlcmd -S DatabaseIPAddress -U DatabaseUsername

这一切都很好。我可以登录数据库没问题。然而,当我使用php artisan迁移我的数据库时,它不起作用。我收到错误:

  [PDOException]
  could not find driver

我已将此作为database.php中的设置:

'sqlsrv' => [
            'driver'   => 'sqlsrv',
            'host'     => env('DB_HOST', 'localhost'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
],

数据库登录信息保存在.env文件中,SQL Server设置为默认值:

'default' => env('DB_CONNECTION', 'sqlsrv'),

有关可能发生的事情的任何帮助?我在网上看了很多帖子(herehere)。人们对不同类型的数据库有类似的问题。他们不得不改变他们的php.ini文件的配置,添加一些关于扩展的行。也许是沿着这些方向的东西我在php.ini文件中尝试了一些我认为可能有用的东西,例如:

; This is the extension for the Microsoft SQLSRV ODBC Driver.
; The driver seems to be located at this file path.
extionsion=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0

重新启动,测试,但无济于事。我一直在这个墙上砸了一下墙。任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

按照以下步骤执行sudo apt-get install php5-mssql
更新 /etc/freetds/freetds.conf

[global]  
# TDS protocol version
; tds version = 4.2
tds version = 8.0
client charset = UTF-8`

将此行添加到 php.ini

mssql.charset = "UTF-8"

参考:Laracast discussion