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:rollback
和 php artisan migrate
是否仍然有效。
环境:
Windows 7 安装了 xampp。
版本:Laravel 5.4、php 7.1
这并不重要,但这是我的 .env
和 database.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 -m
,pdo_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
安装 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:rollback
和 php artisan migrate
是否仍然有效。
环境: Windows 7 安装了 xampp。 版本:Laravel 5.4、php 7.1
这并不重要,但这是我的 .env
和 database.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 -m
,pdo_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