【问题标题】:Fatal error class not found on AWS Beanstalk在 AWS Beanstalk 上找不到致命错误类
【发布时间】:2014-06-23 06:49:11
【问题描述】:

我的 Laravel 3.2.14 应用程序在本地运行。当我将它上传到我的服务器时,我得到了这个:

-------------------------------------
/var/log/httpd/error_log
-------------------------------------
[Tue May 06 07:35:55.995408 2014] [:error] [pid 25701] [client 174.31.190.151:57098] PHP Fatal error:  Class 'Symfony\\Component\\HttpFoundation\\LaravelRequest' not found in /var/app/current/laravel/core.php on line 157
[Tue May 06 07:35:56.184608 2014] [:error] [pid 25703] [client 174.31.190.151:57099] PHP Fatal error:  Class 'Symfony\\Component\\HttpFoundation\\LaravelRequest' not found in /var/app/current/laravel/core.php on line 157
[Tue May 06 07:40:11.514372 2014] [:error] [pid 25705] [client 174.31.190.151:57103] PHP Fatal error:  Class 'Symfony\\Component\\HttpFoundation\\LaravelRequest' not found in /var/app/current/laravel/core.php on line 157
[Tue May 06 07:40:11.704632 2014] [:error] [pid 25706] [client 174.31.190.151:57104] PHP Fatal error:  Class 'Symfony\\Component\\HttpFoundation\\LaravelRequest' not found in /var/app/current/laravel/core.php on line 157
[Tue May 06 10:18:36.676282 2014] [:error] [pid 25707] [client 185.4.227.194:40880] PHP Fatal error:  Class 'Symfony\\Component\\HttpFoundation\\LaravelRequest' not found in /var/app/current/laravel/core.php on line 157
[Tue May 06 10:54:08.718764 2014] [:error] [pid 25701] [client 115.239.248.56:4697] PHP Fatal error:  Class 'Symfony\\Component\\HttpFoundation\\LaravelRequest' not found in /var/app/current/laravel/core.php on line 157
[Tue May 06 13:39:02.024516 2014] [:error] [pid 25703] [client 173.244.215.194:56452] PHP Fatal error:  Class 'Symfony\\Component\\HttpFoundation\\LaravelRequest' not found in /var/app/current/laravel/core.php on line 157
[Tue May 06 13:47:31.401996 2014] [:error] [pid 25705] [client 122.226.223.83:4460] PHP Fatal error:  Class 'Symfony\\Component\\HttpFoundation\\LaravelRequest' not found in /var/app/current/laravel/core.php on line 157

这是我的作曲家自动加载文件的问题吗?我对正在发生的事情没有其他倾向。我已经为此工作了两天,不知道从哪里开始:/

【问题讨论】:

  • 能否提供更多关于您如何在服务器上上传项目的信息? FTP? git 拉?
  • @tseho 我运行 git aws.push,它将我的更改上传到 AWS。
  • 我不知道 Laravel,但大多数时候,当你使用 composer 时,有一个 .gitignore 文件会忽略你的供应商。因此,如果您推送,git 将忽略供应商中的所有文件。这就是您出现此错误的原因。
  • @Tseho 现在正在玩。
  • 我刚刚读到 AWS Beanstalk 有 Composer。你应该尝试这个来安装 composer 依赖项:stackoverflow.com/a/17528576/1671377 并且你不能将 vendor/ 添加到你的 .gitignore 中。

标签: php amazon-web-services laravel


【解决方案1】:

当您推送到 AWS Beanstalk 时,您的 vendor/ 文件不包括在内,因为您的 .gitignore 文件会忽略它们。

您需要在您的 git 项目中包含您的 composer.jsoncomposer.lock,以便在每次更新时将它们发送到 AWS Beanstalk。

您可以运行 composer 来安装依赖项,其配置如下所述:https://stackoverflow.com/a/17528576/1671377

【讨论】:

  • 另一方面,我还需要添加一个名为 PHP_COMPOSER_OPTIONS 的环境变量,其值为 --no-dev,然后它就可以完美运行了。
  • 我还必须在我的 gitignore 中从 cache/ > /cache 更改一个文件夹。
【解决方案2】:

我知道您的问题下方的 cmets 告诉您将 vendor/ 从您的 .gitignore 中取出,但这不是正常做法。 Elastic Beanstalk for PHP 实际上支持 Composer,并且会在您推送新版本时自动在您的项目上运行 composer install

为此,您的 repo 的根目录应该是应用程序的根目录。您还应该通过 .gitignore 启用 composer.jsoncomposer.lock 文件,以便在推送它们时,EB 知道下载并安装您的包。

【讨论】:

  • 我没有说要把vendor/ 带出.gitignore。我在解释为​​什么供应商没有与应用程序的其余部分一起推送。我找到了之后该做什么。
  • 是的,它没有与应用程序的其余部分一起推送,因为它位于 .gitignore 中。但是,EB 会为您运行 Composer,因此最好只推送您的 composer.lock(所有依赖项都锁定在您正在使用的版本中),并且将为您安装相同的环境。
猜你喜欢
  • 2017-03-01
  • 2014-10-03
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
相关资源
最近更新 更多