【问题标题】:"Class not found" using php/silex“找不到类”使用 php/silex
【发布时间】:2013-05-26 17:10:23
【问题描述】:

我在 Mac 上使用 XAMPP 设置了一个本地 Silex 项目。一切正常。现在我将文件上传到我的 Amazon ec2 服务器并尝试运行它。我总是收到 php 错误消息:

"Fatal error: Class 'Silex\Application' not found in /opt/bitnami/apps/..."

我正在使用 Composer 来处理依赖项。我的文件的第一行如下所示:

<?php
require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();
$app['debug'] = true;

有人知道如何解决这个问题吗?哪里有问题?

非常感谢!干杯

【问题讨论】:

  • 这意味着自动加载器有问题,您是否尝试删除您的供应商目录并通过composer重新安装它们?
  • 你是否使用了某种方式通过 git 进行部署?您是否将供应商目录提交到版本控制中?
  • @Maerlyn:到目前为止,我确实删除了自动加载文件并重新生成它。还不是整个目录。我试试看。
  • @igorw:是的,这正是我所做的。你有想法吗?我提交它并用 Jenkins 检查它,将它复制到 htdocs 目录。谢谢大家!

标签: php apache amazon-ec2 autoload silex


【解决方案1】:

正如怀疑的那样,您正在使用某种基于 git 的部署过程。

目前没有标记的 silex 稳定版本(编辑:截至目前,有)。因此,composer 将从源代码安装它,从而将 silex github 存储库克隆到vendor/silex/silex。由于该文件夹本身就是一个 git 存储库,因此无法将这些文件添加到您的主存储库中。这意味着在您的服务器上,vendor/silex/silex 目录根本不存在。

如果您真的想要,您可以使用 --prefer-dist 标志应用运行 composer install 的修复程序,这将强制从 zip 存档安装 silex,从而允许添加目录到你的 git 仓库。

但我要说的是,您不应该让您的供应商参与版本控制。作曲家常见问题解答中的此条目也涵盖了这一点:

我建议将 vendor 添加到您的 .gitignore 并运行 composer install 作为 CI 和部署过程的一部分。

【讨论】:

  • 完美!我要试试,听起来像解决方案!非常感谢!
  • @igorw,--prefer-source 的意思不是和你说的完全相反吗?我想应该是--prefer-dist
  • @dragoon 你是绝对正确的,我已经更新了答案。谢谢!
  • OpenShift 也是如此(因为它使用 git 让您部署应用程序)。在我意识到 Silex 文件夹是空的之前,我已经深入到 shell 访问中了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
相关资源
最近更新 更多