Drush无法识别Heroku的env变量

ozxc1zmp  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(83)

在一个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/',
);

bqujaahr

bqujaahr1#

这是通过设计:
Heroku Exec创建的SSH会话没有将config vars设置为环境变量(即会话中的env没有列出heroku config:set设置的配置变量)。
我建议您使用heroku run连接:

heroku run bash -a my-app
drush status

字符串
heroku ps:execheroku run之间的主要区别是前者连接到运行的dyno,后者旋转one-off dyno
您还应该将该更改回滚到Procfile。重新导出这样的环境变量是没有意义的,以后可能会混淆。
最后,请注意DATABASE_URL的值可以随时更改。即使您能够以持久化的方式导出其当前值,该连接字符串也可能无法在明天工作。最好每次都读取变量。
旁注:It doesn't look like drush status is a valid command。我不是Drupal的人,所以除了指出这一点之外,我帮不上什么忙。也许你正在寻找core:statusconfig:status,或者其他类似命名的命令?

相关问题