【问题标题】:Laravel connection MSSqL server works with cli, but not in browserLaravel 连接 MSSqL 服务器可与 cli 一起使用,但不能在浏览器中使用
【发布时间】:2017-11-05 06:48:29
【问题描述】:

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

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

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

PDOExeption (1/2)

找不到驱动程序

PDOExeption (2/2)

找不到驱动程序(从.....选择计数(*)

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

环境: 安装了 xampp 的 Windows 7。 版本: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

配置文件 (php.ini) 路径:C:\Windows

加载的配置文件:C:\xampp\php\php.ini

扫描其他 .ini 文件:(无)

解析的其他 .ini 文件:(无)

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

加载的配置文件 C:\xampp\php\php.ini

php -m 命令显示:

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

[PHP 模块]

bcmath

...(其他一些)

pdo_mysql

pdo_sqlite

pdo_sqlsrv(这个是开启的)

法尔

...

[Zend 模块]

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

【问题讨论】:

  • cli和webserver使用的是同一个php.ini吗?
  • 我想是这样,但我不确定。我怎样才能知道?请记住我正在使用 laravel(所以我认为他们应该都使用相同的)和 afaik 我只有一个 php.ini
  • 您可以尝试在 cli 上运行 php -m 并使用 phpinfo() 创建一些路由以确认是否为两者加载了扩展
  • 我认为他们不使用相同或网络服务器找不到驱动程序,请参阅我的编辑。
  • phpinfo() 是否说 php.ini xampp 正在使用什么?好久没用xampp了,不过提醒一下那是apache的另一个文件

标签: php sql-server driver laravel-5.4


【解决方案1】:

我认为解决了问题的方法

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

【讨论】:

【解决方案2】:

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


1。下载 Microsoft Drivers for PHP for SQL Server

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

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

你必须关心:

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

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


2。在 WAMP 中安装 Microsoft Drivers for PHP for SQL Server

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


3。在 WAMP 中为 SQL Server 配置 Microsoft Drivers for PHP

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2014-07-20
    • 2017-12-04
    相关资源
    最近更新 更多