php - Laravel:PDO 异常,即使已安装和测试驱动程序也找不到驱动程序

标签 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

重新启动,测试,但无济于事。在这个问题上,我已经用头撞墙了一段时间。任何帮助将不胜感激。谢谢。

最佳答案

按照这些步骤
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

关于php - Laravel:PDO 异常,即使已安装和测试驱动程序也找不到驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38404230/

相关文章:

php - laravel 流明包中的动态模型命名空间

php - Laravel-如何为用户授予多个角色?

php - JMSSerializerBundle 在 JSON 中返回 double 字符串

sql - 从 case 表达式中排除

sql-server - SSDT Schema Compare总是添加对象,这些对象在解决方案中为 "Build = None"

php - 完全重置 Laravel 5 迁移内容?

php - PDO:远程网站上的数据库连接

php - PHP 中十六进制的否定,有趣的行为

asp.net - 如何计算复选框列表值?

laravel - 方法addEagerConstraints不存在