7

我曾经tinker使用以下命令在以前的 Amazon AMI 上执行:

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_PASSWORDorRDS_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从 shell 中获取变量,我得到了相同的结果:

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

1 回答 1

13

不在文档中,但环境变量在/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它拥有它。

于 2020-05-24T12:45:54.570 回答