Laravel连接MSSqL服务器与cli配合使用,但不适用于浏览器

时间:2017-06-04 10:12:36

标签: php sql-server driver laravel-5.4

安装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(启用此功能)

     

的Phar

     

...

     

[Zend Modules]

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

2 个答案:

答案 0 :(得分:2)

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

1。下载用于SQL Server的Microsoft驱动程序

您应该下载以下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 64位/ PHP 7 /线程安全 - > _7_ts_x64)

2。在WAMP中为SQL Server安装Microsoft驱动程序

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

3。在WAMP中为SQL Server配置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

答案 1 :(得分: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