我以前通过使用以下命令在以前的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_PASSWORD
或RDS_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
答案 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
拥有它。