gpt4 book ai didi

laravel-5 - Laravel 命令在 AWS EC2 上由 Cron 执行时返回不同的输出

转载 作者:行者123 更新时间:2023-12-02 02:50:43 64 4
gpt4 key购买 nike

我在 Elastic Beanstalk 环境中的 EC2 实例中的 cron 作业遇到了一些问题。

当我连接到 EC2 实例并从终端键入 php artisan command:backup_logs 时,作业运行顺利,一切正常。而当作业通过 cron * * * * */usr/bin/php/var/app/current/artisan command:backup_logs 运行时,它会在日志中返回以下错误:

[2018-09-17 16:14:01] production.ERROR: Missing required client configuration options:

region: (string)

A "region" configuration value is required for the "s3" service

(e.g., "us-west-2"). A list of available public regions and endpoints can be
found at http://docs.aws.amazon.com/general/latest/gr/rande.html. {"exception":"[object] (InvalidArgumentException(code: 0): Missing required client configuration options:

region: (string)

A \"region\" configuration value is required for the \"s3\" service
(e.g., \"us-west-2\"). A list of available public regions and endpoints can be
found at http://docs.aws.amazon.com/general/latest/gr/rande.html. at /var/app/current/vendor/aws/aws-sdk-php/src/ClientResolver.php:371)
[stacktrace]
#0 /var/app/current/vendor/aws/aws-sdk-php/src/ClientResolver.php(267): Aws\\ClientResolver->throwRequired(Array)
#1 /var/app/current/vendor/aws/aws-sdk-php/src/AwsClient.php(158): Aws\\ClientResolver->resolve(Array, Object(Aws\\HandlerList))
#2 /var/app/current/vendor/aws/aws-sdk-php/src/S3/S3Client.php(261): Aws\\AwsClient->__construct(Array)
#3 /var/app/current/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php(208): Aws\\S3\\S3Client->__construct(Array)
#4 /var/app/current/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php(125): Illuminate\\Filesystem\\FilesystemManager->createS3Driver(Array)
........

它在 laravel.log 上给出了一个 PRODUCTION 错误,而这是 DEVELOPMENT,并且正在寻找的值已经设置。正如我之前提到的,当我以登录用户身份从终端运行上传时,上传工作正常。

我在所有命令上都遇到了同样的问题,而且当我想按计划运行作业时,也会发生同样的错误。

请问有谁能给点启发吗?非常感谢!

解决方案

因此,要解决此问题,只需在 .ebextensions 文件夹中创建一个配置文件并粘贴以下 YAML 代码:

files:
"/etc/cron.d/artisan_scheduler":
mode: "000644"
owner: root
group: root
content: |
* * * * * ec2-user . $HOME/.bash_profile; php /var/app/current/artisan schedule:run >> /dev/null 2>&1

最佳答案

我认为 S3 SDK 环境变量是以某种方式为您当前运行 artisan 命令的 shell 用户设置的(当它正常运行时)。您需要检查它需要的环境变量并在 cron 命令前加上它们,或者您可以尝试在 cron 命令中加载用户现有的变量。

最受欢迎的解决方案似乎来自 this问题并建议您在 cron 命令前加上:

。 $HOME/.profile;

关于laravel-5 - Laravel 命令在 AWS EC2 上由 Cron 执行时返回不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52371506/

64 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com