Amazon Linux 2(Elastic Beanstalk)的Laravel工匠修补匠

时间:2020-05-15 09:58:08

标签: php laravel amazon-web-services amazon-elastic-beanstalk tinker

我以前通过使用以下命令在以前的Amazon AMI上执行tinker

sudo -E -u webapp php artisan tinker

现在我正在使用PHP 7.4 on Amazon Linux 2,当我执行上述命令时,出现此错误:

Unable to create PsySH runtime directory. Make sure PHP is able to write to /run/user/1000 in order to continue.

因此,为了进行测试,我授予了该文件夹的完全许可权,然后再次执行了命令:

sudo chmod 777 /run/user/1000
sudo -E -u webapp php artisan tinker

实际上,没有错误,但是没有加载诸如RDS_PASSWORDRDS_DB_NAME之类的环境变量,因此无法执行数据库操作:

Psy Shell v0.10.4 (PHP 7.4.4 — cli) by Justin Hileman
>>> env('RDS_DB_NAME')
 => null
>>> User::first()
 Illuminate/Database/QueryException with message 'SQLSTATE[HY000] [2002] Connection refused 
 (SQL: select * from `users` limit 1)'

我还尝试从外壳程序中echo进行变量操作,得到的结果相同:

sudo su webapp
sh-4.2$ echo $RDS_DB_NAME
  # Empty here

1 个答案:

答案 0 :(得分:6)

不在文档上,但环境变量位于/opt/elasticbeanstalk/deployment/env

因此您可以执行以下操作:

export $(sudo cat /opt/elasticbeanstalk/deployment/env) && sudo -E -u webapp php artisan tinker

另外,要处理PsySH问题,只需在源代码目录中创建一个包含以下内容的.psysh.php文件:

<?php

return [
    'runtimeDir'    => './.psysh',
];

然后Psysh将使用该目录而不会出现任何权限问题,因为webapp拥有它。