【问题标题】:"laravel.log could not be opened" error on Elastic BeanstalkElastic Beanstalk 上的“laravel.log 无法打开”错误
【发布时间】: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”获取用户)。删除了文件,它自己创建了一个新文件。
  • 我已启用将日志收集到尾日志和捆绑日志中,这会产生任何问题(怀疑这是偶尔发生的)?

标签: laravel amazon-web-services logging


【解决方案1】:

问题是您将所有者设置为 root:root 并且 apache 用户是 ec2-user。

当您删除现有日志时,正确的用户将创建新日志并根据需要运行。您还可以将文件 chown 给 ec2-user,这也可以。

【讨论】:

  • 这个脚本不会只是更改权限吗?我认为所有者和组是它正在生成的 shell 脚本文件。我在这里错过了什么吗?虽然我在命令中添加了 sudo 并且不再看到错误。虽然这些错误是随机出现的,但会为每个好奇的人保持最新的线程。
猜你喜欢
  • 2014-06-18
  • 2014-07-26
  • 2016-06-13
  • 2020-04-25
  • 2018-01-21
  • 2020-05-24
  • 2015-03-05
  • 1970-01-01
相关资源
最近更新 更多