Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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 如何配置Laravel应用程序以使用heroku PostgreSQL?_Php_Postgresql_Laravel_Heroku - Fatal编程技术网

Php 如何配置Laravel应用程序以使用heroku PostgreSQL?

Php 如何配置Laravel应用程序以使用heroku PostgreSQL?,php,postgresql,laravel,heroku,Php,Postgresql,Laravel,Heroku,我目前正在从事一个Laravel项目。默认数据库连接指向mySQL驱动程序。如何将驱动程序更改为Postgres并使用heroku提供的凭据?首先,在数据库配置文件顶部添加以下代码 $host = env('DB_HOST', '127.0.0.1'); $database = env('DB_DATABASE', ''); $username = env('DB_USERNAME', 'forge'); $password = env('DB_PASSWORD', 'forge'); if

我目前正在从事一个Laravel项目。默认数据库连接指向mySQL驱动程序。如何将驱动程序更改为Postgres并使用heroku提供的凭据?

首先,在数据库配置文件顶部添加以下代码

$host = env('DB_HOST', '127.0.0.1');
$database = env('DB_DATABASE', '');
$username = env('DB_USERNAME', 'forge');
$password = env('DB_PASSWORD', 'forge');


if($databaseUrl = getenv('DATABASE_URL')) {

    $url = parse_url($databaseUrl);

    $host = $url['host'];
    $username = $url['user'];
    $password = $url['pass'];
    $database = substr($url['path'], 1);
}
现在在同一个文件中,像这样更改pgSQL键的值

'pgsql' => [
            'driver' => 'pgsql',
            'host' => $host,
            'port' => env('DB_PORT', '5432'),
            'database' => $database,
            'username' => $username,
            'password' => $password,
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ]
现在登录到heroku帐户,在项目的“设置”选项卡下添加两个配置变量

  • Key:DATABASE_URL和value:heroku在创建hobby dev实例时提供的连接字符串
  • 键:DB_连接和值:pgsql

  • 首先,在数据库配置文件的顶部添加以下代码

    $host = env('DB_HOST', '127.0.0.1');
    $database = env('DB_DATABASE', '');
    $username = env('DB_USERNAME', 'forge');
    $password = env('DB_PASSWORD', 'forge');
    
    
    if($databaseUrl = getenv('DATABASE_URL')) {
    
        $url = parse_url($databaseUrl);
    
        $host = $url['host'];
        $username = $url['user'];
        $password = $url['pass'];
        $database = substr($url['path'], 1);
    }
    
    现在在同一个文件中,像这样更改pgSQL键的值

    'pgsql' => [
                'driver' => 'pgsql',
                'host' => $host,
                'port' => env('DB_PORT', '5432'),
                'database' => $database,
                'username' => $username,
                'password' => $password,
                'charset' => 'utf8',
                'prefix' => '',
                'schema' => 'public',
                'sslmode' => 'prefer',
            ]
    
    现在登录到heroku帐户,在项目的“设置”选项卡下添加两个配置变量

  • Key:DATABASE_URL和value:heroku在创建hobby dev实例时提供的连接字符串
  • 键:DB_连接和值:pgsql

  • 这是一个非常宽泛的描述。请提供问题的详细信息,并告诉我们您到目前为止尝试了什么。@Siegmeyer我已尝试更改.env文件中的环境变量值,以匹配Heroku提供的凭据。但是,.env文件不是提交的一部分(添加到.gitignore中)。我需要一种方法让Heroku填充正确的环境变量。这是一个非常广泛的描述。请提供问题的详细信息,并告诉我们您到目前为止尝试了什么。@Siegmeyer我已尝试更改.env文件中的环境变量值,以匹配Heroku提供的凭据。但是,.env文件不是提交的一部分(添加在.gitignore中)。我需要一种方法让Heroku填充正确的环境变量。