Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用带有sqlsrv的共享主机设置Laravel?_Php_Sql Server_Laravel_Shared Hosting_Sqlsrv - Fatal编程技术网

Php 如何使用带有sqlsrv的共享主机设置Laravel?

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 (

我有一个在Laravel开发的项目,我想将该项目上传到Linux共享主机

在我的项目中,我有两个到不同数据库的连接。首先是mysql数据库,它在共享主机中运行良好。第二个是访问另一台服务器的sql server数据库。因此,对于第二个数据库,我使用sqlsrv驱动程序,但在linux共享主机上运行时遇到问题,因此返回以下错误:

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' => '',
        ],
...