在一个PHP / Drupal项目中,我在Heroku示例中使用Drush时遇到了一个问题。Drush无法识别settings.php
文件中的环境变量DATABASE_URL
。
然而,当我使用命令heroku config -a my-app -s
时,DATABASE_URL
是可见的。phpinfo()
也是如此。
使用Procfile
:
web: export DATABASE_URL=$DATABASE_URL && heroku-php-apache2 web/
字符串
但这也没用
让Drush识别变量的唯一方法是当我在示例上时执行export DATABASE_URL="mysql://..."
,但它不是持久的:
heroku ps:exec -a my-app
export DATABASE_URL="mysql://..."
drush status
型
有什么建议吗?settings.php
:
$db_cred = parse_url(getenv('DATABASE_URL'));
$databases['default']['default'] = array (
'database' => ltrim($db_cred['path'], '/'),
'username' => $db_cred['user'],
'password' => $db_cred['pass'],
'prefix' => '',
'host' => $db_cred['host'],
'port' => $db_cred['port'],
'isolation_level' => 'READ COMMITTED',
'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql',
'driver' => $db_cred['scheme'],
'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
);
型
1条答案
按热度按时间bqujaahr1#
这是通过设计:
Heroku Exec创建的SSH会话没有将config vars设置为环境变量(即会话中的
env
没有列出heroku config:set
设置的配置变量)。我建议您使用
heroku run
连接:字符串
heroku ps:exec
和heroku run
之间的主要区别是前者连接到运行的dyno,后者旋转one-off dyno。您还应该将该更改回滚到
Procfile
。重新导出这样的环境变量是没有意义的,以后可能会混淆。最后,请注意
DATABASE_URL
的值可以随时更改。即使您能够以持久化的方式导出其当前值,该连接字符串也可能无法在明天工作。最好每次都读取变量。旁注:It doesn't look like
drush status
is a valid command。我不是Drupal的人,所以除了指出这一点之外,我帮不上什么忙。也许你正在寻找core:status
,config:status
,或者其他类似命名的命令?