Php 如何使用带有sqlsrv的共享主机设置Laravel?
我有一个在Laravel开发的项目,我想将该项目上传到Linux共享主机 在我的项目中,我有两个到不同数据库的连接。首先是mysql数据库,它在共享主机中运行良好。第二个是访问另一台服务器的sql server数据库。因此,对于第二个数据库,我使用sqlsrv驱动程序,但在linux共享主机上运行时遇到问题,因此返回以下错误:Php 如何使用带有sqlsrv的共享主机设置Laravel?,php,sql-server,laravel,shared-hosting,sqlsrv,Php,Sql Server,Laravel,Shared Hosting,Sqlsrv,我有一个在Laravel开发的项目,我想将该项目上传到Linux共享主机 在我的项目中,我有两个到不同数据库的连接。首先是mysql数据库,它在共享主机中运行良好。第二个是访问另一台服务器的sql server数据库。因此,对于第二个数据库,我使用sqlsrv驱动程序,但在linux共享主机上运行时遇到问题,因此返回以下错误: SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (
SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)
at PDO->__construct('dblib:host=IP:1433;dbname=DBNAME;charset=utf8', 'USER', 'PASSWORD', array(0, 2, 0, false))
我这样设置连接:
'DB2' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'IP'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'DBNAME'),
'username' => env('DB_USERNAME', 'USER'),
'password' => env('DB_PASSWORD', 'PASSWORD'),
'charset' => 'utf8',
'prefix' => '',
],
在这个错误之前,由于这个连接,我还有很多其他错误,所以我必须添加一些php扩展并更新到7.2版本。我还添加了一些PHP pear包
下一幅图显示了我添加的扩展:
在我的本地机器,我可以运行项目没有任何问题和连接工作良好
如何解决这个问题?您应该在sqlsrv驱动程序的.env文件中定义DB_HOST和DB_PORT环境变量。目前,连接似乎使用了默认值。默认值-是env函数的第二个参数。
请注意,如果您使用两个不同的连接-变量名称应该不同,例如:
.env内容:
config/database.php内容:
我想首先检查托管服务器的php版本,并尝试为php版本安装正确的PDO驱动程序 如果您使用PHP版本7.1.7作为*86体系结构,则将该.dll文件放入 extension=php_pdo_sqlsrv_71_ts_*86.dll 如果您使用的是另一个版本的PHP,那么请尝试将一个正确的.dll文件放入PHP.ini文件中并进行声明 然后重新启动服务并运行它
我希望它能帮助您……您的共享主机包是否提供了SQLServer实例?通常情况下,这些都不需要付费,因为这是一个M$productHi,您是否设法获得解决方案?
...
MYSQL_DB_HOST=0.0.0.0
MYSQL_DB_PORT=3939
SQLSRV_DB_HOST=0.0.0.0
SQLSRV_DB_PORT=1433
...
...
'DB' => [
'driver' => 'mysql',
'host' => env('MYSQL_DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3939'),
'database' => env('DB_DATABASE', 'DBNAME'),
'username' => env('DB_USERNAME', 'USER'),
'password' => env('DB_PASSWORD', 'PASSWORD'),
'charset' => 'utf8',
'prefix' => '',
],
'DB2' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'DBNAME'),
'username' => env('DB_USERNAME', 'USER'),
'password' => env('DB_PASSWORD', 'PASSWORD'),
'charset' => 'utf8',
'prefix' => '',
],
...