提问人:florian_drupal 提问时间:11/15/2023 最后编辑:Chrisflorian_drupal 更新时间:11/16/2023 访问量:36
Drush 无法识别 Heroku 的 env 变量
Drush does not recognize an env variable with Heroku
问:
在PHP / Drupal项目中,我在Heroku实例中使用Drush时遇到了问题。Drush 无法识别文件中的环境变量。DATABASE_URL
settings.php
但是,当我使用命令时,它是可见的。与 相同。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/',
);
答:
0赞
Chris
11/16/2023
#1
Heroku Exec 创建的 SSH 会话没有将配置变量设置为环境变量(即,在会话中不会列出由 设置的配置变量)。
env
heroku config:set
我建议你改用heroku run
进行连接:
heroku run bash -a my-app
drush status
和之间的主要区别在于前者连接到正在运行的测功机,而后者则旋转一次性测功机。heroku ps:exec
heroku run
您还应该将该更改回滚到 .重新导出这样的环境变量是没有意义的,以后可能会造成混淆。Procfile
最后,请注意,的值可以随时更改。即使能够以持久方式导出其当前值,该连接字符串也可能在明天不起作用。最好每次都读取变量。DATABASE_URL
旁注:看起来 drush status
不是一个有效的命令。我不是一个Drupal的人,所以除了指出这一点之外,我无能为力。也许您正在寻找 、 或其他名称相似的命令?core:status
config:status
评论
1赞
florian_drupal
11/17/2023
谢谢,这是作品! 是 的别名drush status
drush core-status
评论