Laravel 连接 MSSqL 服务器使用 cli,但不能在浏览器中使用

Laravel connection MSSqL server works with cli, but not in browser

安装 dll's 以与 MSSqL 服务器一起使用后,命令 php artisan migrate 运行 正确并且表格已在 db 中生成。所以我认为该连接适用于此应用程序。

然后我使用命令 php artisan make:auth(不使用数据库连接)来构建身份验证文件。

现在,当我尝试注册任何人时出现错误:

PDOExeption (1/2)

Could not find driver

PDOExeption (2/2)

Could not find driver (select count(*) from .....

现在我试着看看使用 cli 命令是否仍然有效,php artisan migrate:rollbackphp artisan migrate 是否仍然有效。

环境: Windows 7 安装了 xampp。 版本:Laravel 5.4、php 7.1

这并不重要,但这是我的 .envdatabase.php 文件的一部分:

`database.php`
        'sqlsrv' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_HOST', '10.0.0.40'),
        'port' => env('DB_PORT', '1433'),
        'database' => env('DB_DATABASE', 'sqlcon'),
        'username' => env('DB_USERNAME', 'sa'),
        'password' => env('DB_PASSWORD', 'test'),
        'charset' => 'utf8',
        'prefix' => '',
    ],

`.env`
DB_CONNECTION=sqlsrv
DB_HOST=10.0.0.40
DB_PORT=1433
DB_DATABASE=sqlcon
DB_USERNAME=sa
DB_PASSWORD=test

那么为什么 cli 命令可以工作而浏览器却不能?

laravel 是否对 cli 和浏览器连接使用相同的配置?


更新:添加了一些额外的信息

C:\xampp\htdocs\sqlcon>php --ini

Configuration File (php.ini) Path: C:\Windows

Loaded Configuration File: C:\xampp\php\php.ini

Scan for additional .ini files in: (none)

Additional .ini files parsed: (none)

使用 this 显示我的 php 配置,它显示:

Loaded Configuration File C:\xampp\php\php.ini

php -m 命令显示:

C:\xampp\htdocs\sqlcon>php -m

[PHP Modules]

bcmath

...(some others)

pdo_mysql

pdo_sqlite

pdo_sqlsrv (this one is enabled)

Phar

...

[Zend Modules]

根据 php -mpdo_sqlsrv 已启用,但我在 phpinfo 页面中找不到任何对它的引用。

我认为已解决问题

php.ini 中安装驱动程序时,我使用了以下行,因为这是扩展目录 (extension_dir="C:\xampp\php\ext") 中文件的名称:

extension=php_pdo_sqlsrv_71_ts.dll

更改此目录中的文件名和 php.ini 文件中对它的引用并重新启动 apache 解决了问题。

所以现在文件是 php_pdo_sqlsrv.dll 并且引用是:

extension=php_pdo_sqlsrv.dll

实际解决问题的方法

下载 dlls 并更改为 php.ini 后安装 this

别忘了重启 apache

我有同样的问题,我已经解决如下(WAMP):


1。为 SQL Server

下载 PHP 的 Microsoft 驱动程序

您应该下载以下 2 个 .dll 文件。

  • PHP PDO SQL 服务器驱动程序
    例如:- php_pdo_sqlsrv_7_ts_x64.dll
  • PHP SQL 服务器驱动程序
    例如:- php_sqlsrv_7_ts_x64.dll

您需要关注的问题:

  • 操作系统。
  • 操作系统版本(32 位/64 位)。
  • PHP版本。
  • PHP线程安全(ts/nts)。

(我的案例:Windows 7 64 位/PHP 7 / 线程安全 -> _7_ts_x64)


2。在 WAMP

中为 SQL 服务器安装 PHP 的 Microsoft 驱动程序

将下载的2个.dll文件放入wamp64\bin\php\php*\ext


3。在 WAMP

中为 SQL 服务器配置 PHP 的 Microsoft 驱动程序

在默认扩展后键入以下代码:

extension=php_pdo_sqlsrv_7_ts_x64.dll
extension=php_sqlsrv_7_ts_x64.dll

在以下文件中:
wamp64\bin\apache\apache*\bin\php.ini
wamp64\bin\php\php*\php.ini
wamp64\bin\php\php*\phpForApache.ini


4。重启 WAMP