【发布时间】:2023-03-17 18:30:01
【问题描述】:
我曾经使用此命令在以前的 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)'
我也尝试从 shell 中 echo 变量,我得到了相同的结果:
sudo su webapp
sh-4.2$ echo $RDS_DB_NAME
# Empty here
【问题讨论】:
-
你在哪里设置了这些环境变量?
-
因为是EB环境,有AWS自动提供给服务器的实例,无需手动设置。
-
这里有一些信息:docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 我使用 Laravel,所以我使用
env('RDS_XXX')而不是$_SERVER来访问它们,但这非常相似。 -
@Marc 我也面临同样的问题,我找不到问题所在。如果您找到了解决方法,请告诉我。
-
@realnsleo 这就是我悬赏的原因。我浏览了整个互联网,没有找到任何相关的内容。
标签: php laravel amazon-web-services amazon-elastic-beanstalk tinker