Elastic Beanstalk 上的“laravel.log 无法打开”错误
Posted
技术标签:
【中文标题】Elastic Beanstalk 上的“laravel.log 无法打开”错误【英文标题】:"laravel.log could not be opened" error on Elastic Beanstalk 【发布时间】:2020-09-28 06:41:22 【问题描述】:我在 AWS ElasticBeanstalk 上部署了一个 Laravel 应用程序(php 7.3 在 64 位 Amazon Linux/2.9.7 上运行)。 应用程序在运行时运行良好,但对于少数请求会随机抛出以下错误。
PHP 致命错误:未捕获的 UnexpectedValueException:流或 文件“/var/app/current/storage/logs/laravel.log”无法打开: 无法打开流:权限被拒绝 /var/app/current/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:110\n堆栈 跟踪:\n#0 /var/app/current/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(42): Monolog\Handler\StreamHandler->write(Array)\n#1 /var/app/current/vendor/monolog/monolog/src/Monolog/Logger.php(323): Monolog\Handler\AbstractProcessingHandler->handle(Array)\n#2 /var/app/current/vendor/monolog/monolog/src/Monolog/Logger.php(541): Monolog\Logger->addRecord(400, 'Unhandled Excep...', Array)\n#3 /var/app/current/vendor/laravel/framework/src/Illuminate/Log/Logger.php(174): Monolog\Logger->error('Unhandled Excep...', Array)\n#4 /var/app/current/vendor/laravel/framework/src/Illuminate/Log/Logger.php(87): Illuminate\Log\Logger->writeLog('error', 'Unhandled Excep...', 数组)\n#5 /var/app/current/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(54 在 /var/app/current/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php 110号线
我不明白为什么它只对某些请求而不是其他请求抛出错误。尽管如此,我尝试按照以下 .ebextensions 的一些帖子的建议将权限应用于存储和引导文件夹,但没有得到它的工作。
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_make_storage_writable.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
echo "Making /storage and /bootstrap writeable..."
chmod -R 777 /var/app/current/storage
chmod -R 777 /var/app/current/bootstrap
有人可以帮我吗?我对 Laravel 和 AWS 都很陌生,对这里可能出现的问题非常困惑。
【问题讨论】:
您的应用是否以 root 身份运行?您是否尝试仅删除日志文件并查看它是否会自行创建一个新文件? @ahackney 该应用程序以 ec2-user 身份运行(使用“ps aux | grep apache”获取用户)。删除了文件,它自己创建了一个新文件。 我已启用将日志收集到尾日志和捆绑日志中,这会产生任何问题(怀疑这是偶尔发生的)? 【参考方案1】:问题是您将所有者设置为 root:root 并且 apache 用户是 ec2-user。
当您删除现有日志时,正确的用户将创建新日志并根据需要运行。您还可以将文件 chown 给 ec2-user,这也可以。
【讨论】:
这个脚本不会只是更改权限吗?我认为所有者和组是它正在生成的 shell 脚本文件。我在这里错过了什么吗?虽然我在命令中添加了 sudo 并且不再看到错误。虽然这些错误是随机出现的,但会为每个好奇的人保持最新的线程。以上是关于Elastic Beanstalk 上的“laravel.log 无法打开”错误的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 上的 Spring Boot 并记录到文件
如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?
如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?