2015-02-07 56 views
2

我已将Symfony应用程序部署到one.com服务器。我写了一个邮件服务,通过SwiftMailer发送我的邮件。Symfony2 - 未找到类XXX

现在,由于one.com不允许phar-extensions允许,作曲家无法通过ssh更新。于是,我产生的类映射本地与

composer update -o 

每当我试图让邮件服务,应用程序引发的错误:

Fatal error: Class 'Stocksolutions\ShopBundle\DependencyInjection\Mail' not found in /customers/4/b/b/stocksolutions.be/httpd.www/releases/20150204201140/app/cache/dev/appDevDebugProjectContainer.php on line 3602

我已经搜查了作曲家类映射和类未找到它在里面:

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

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

任何想法?

+3

您不应该在生产服务器上进行更新,因为这会拉出未测试的新版本。运行'composer install'并提交并将'composer.lock'文件部署到您的项目中。您的部署可以使用SSH从本地机器复制到远程,并安装所有依赖项和自动加载。如果它在本地工作,它应该远程工作。 – Sven 2015-02-07 17:16:55

+0

当我不生成类图时它不起作用。然后我在主页上看到这个'Class not found'错误(带有不同的类)。也许值得一提的是,应用程序位于子文件夹中,并通过htaccess文件引用。然后,类映射中类的路径是正确的,并且文件已就位。因此,我无法真正包装我的头在此.. – 2015-02-07 19:23:43

+0

您是否尝试在生成类图后清除缓存?这会更新'appDevDebugProjectContainer.php',也许你的问题就会消失。 – 2015-02-08 17:22:37

回答

5

这是区分大小写的问题。

你的错误:

Fatal error: Class 'Stocksolutions\ShopBundle\DependencyInjection\Mail' not found

小字符sStocksolutions命名空间PSR力量来搜索文件/src/Stock**s**olutions/ShopBundle/DependencyInjection/Mail.php,但存在/src/Stock**S**olutions/ShopBundle/DependencyInjection/Mail.php

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

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

+0

谢谢soooo了。我无法理解这一点! – 2015-02-10 11:54:41