【问题标题】:Symfony2 - Class XXX not foundSymfony2 - 找不到类 XXX
【发布时间】:2015-04-07 13:42:03
【问题描述】:

我已经将 Symfony 应用程序部署到 one.com 服务器。我编写了一个邮件服务,通过 SwiftMailer 发送我的电子邮件。

现在,由于 one.com 不允许使用 phar 扩展,因此无法通过 ssh 更新作曲家。所以我用

在本地生成了类图
composer update -o

每当我尝试获取邮件服务时,应用程序都会抛出错误:

致命错误:类 'Stocksolutions\ShopBundle\DependencyInjection\Mail' 未在 /customers/4/b/b/stocksolutions.be/httpd.www/releases/20150204201140/app/cache/dev/appDevDebugProjectContainer.php 3602行

我已经搜索了composer classmap,没有找到的类在里面:

'StockSolutions\\ShopBundle\\DependencyInjection\\Mail' => $baseDir . '/src/StockSolutions/ShopBundle/DependencyInjection/Mail.php'

此外,我可以在容器中获取其他服务,例如那些来自 FOSUserBundle,但获取我的自定义服务会引发错误。另外,我在本地测试时没有收到这些错误..

有什么想法吗?

【问题讨论】:

  • 你不应该在生产服务器上更新,因为这会拉取你没有测试过的新版本。运行composer install 并将composer.lock 文件提交并部署到您的项目中。您的部署可能使用 SSH 从本地计算机复制到远程计算机,并安装了所有依赖项和自动加载。如果它在本地工作,它应该在远程工作。
  • 当我不生成classmap时它不起作用。然后我在主页上得到这个Class not found-error(使用不同的类)。也许值得知道的是该应用程序位于子文件夹中并通过 htaccess 文件引用。再说一次,类映射中类的路径是正确的并且文件就位。所以我不能真正换行我的头在这个..
  • 您是否在生成类映射后尝试清除缓存?这将更新appDevDebugProjectContainer.php,也许你的问题会消失。
  • 是的,我有,这并没有改变任何东西。
  • 您不必使用 composer 作为 phar,您可以签出源代码并以这种方式使用它,可以将其安装在某处或直接包含在您的项目中...

标签: php symfony composer-php


【解决方案1】:

这是区分大小写的问题。

你的错误:

致命错误:类 'Stocks解决方案\ShopBundle\DependencyInjection\Mail' 未找到

Stocksolutions 命名空间中的小写字母 s 用于 PSR 强制搜索文件 /src/Stock**s**olutions/ShopBundle/DependencyInjection/Mail.php,但存在 /src/Stock**S**olutions/ShopBundle/DependencyInjection/Mail.php

在可能是 Windows 的本地系统上,路径/文件名不区分大小写,不会发生错误。

附:类命名空间中的拼写错误很可能是在捆绑服务描述中 (services.yml/services.xml)。

【讨论】:

  • 非常感谢。我无法理解这个!
猜你喜欢
  • 2023-03-02
  • 2013-11-08
  • 1970-01-01
  • 2013-01-23
  • 2012-08-28
  • 2015-04-27
  • 2015-11-04
  • 2018-06-28
  • 1970-01-01
相关资源
最近更新 更多