简体   繁体   中英

Laravel artisan tinker from Amazon Linux 2 (Elastic Beanstalk)

I used to execute tinker on previous Amazon AMI by using this command:

sudo -E -u webapp php artisan tinker

Now I am using PHP 7.4 on Amazon Linux 2 and when I execute the above command, I get this error:

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

So, In order to test, I gave the full permission to this folder and then executed my command again:

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

Actually, no error, but the environnement variables such as RDS_PASSWORD or RDS_DB_NAME are not loaded, making it impossible to perform database actions:

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)'

I also tried to echo the variable from a shell, I got the same result:

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

It's not on the documentation but the environment variables are in /opt/elasticbeanstalk/deployment/env

So you can do something like this:

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

Also, to deal with the PsySH problem, just create a .psysh.php file in your source code directory with that content:

<?php

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

Psysh will then use that directory without any permission problem because webapp owns it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM