php - 来自 Amazon Linux 2 (Elastic Beanstalk) 的 Laravel artisan 修补匠

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

我曾经执行过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_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来自 shell 的变量,我得到了相同的结果:
sudo su webapp
sh-4.2$ echo $RDS_DB_NAME
  # Empty here

最佳答案

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

关于php - 来自 Amazon Linux 2 (Elastic Beanstalk) 的 Laravel artisan 修补匠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61816556/

相关文章:

php - 将 jquery ajax 数组传递给 php 不起作用

php stripos if 页面 ==

java - 我想在 PHP 中集成 Aadhaar 卡身份验证。我尝试使用此代码进行 API 访问,但无法得到任何响应

angularjs - nginx - 在不同端点和相同域上提供后端和前端服务

javascript - 带有标记的谷歌地图未出现 map

php - 如何在Drupal中显示两个 block 中的一个 block ?

php - MYSQL 连接同一张表中的多列

amazon-web-services - S3 存储桶策略与访问控制列表

amazon-web-services - aws sam invalid 请求中包含的 token 无效

java - DynamoDB映射器仅保存项目Java中的一个属性