我正在使用symfony 2.3框架,自动加载器声称已找到该文件但没有类:
RuntimeException: The autoloader expected class "Sensio\Bundle\
FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter"
to be defined in file "/home/na/auth/vendor/sensio/framework-extra-bundle/
Sensio/Bundle/FrameworkExtraBundle/Request/ParamConverter/
DateTimeParamConverter.php". The file was found but the class was not in it,
the class name or namespace probably has a typo.
此参考的文件如下所示:
<?php
/*
* This file is part of the Symfony framework.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use DateTime;
/**
* Convert DateTime instances from request attribute variable.
*
* @author Benjamin Eberlei <kontakt@beberlei.de>
*/
class DateTimeParamConverter implements ParamConverterInterface
{
/**
* @{inheritdoc}
*
* @throws NotFoundHttpException When invalid date given
*/
public function apply(Request $request, ConfigurationInterface $configuration)
{
$param = $configuration->getName();
if (!$request->attributes->has($param)) {
return false;
}
$options = $configuration->getOptions();
$value = $request->attributes->get($param);
$date = isset($options['format'])
? DateTime::createFromFormat($options['format'], $value)
: new DateTime($value);
if (!$date) {
throw new NotFoundHttpException('Invalid date given.');
}
$request->attributes->set($param, $date);
return true;
}
/**
* @{inheritdoc}
*/
public function supports(ConfigurationInterface $configuration)
{
if (null === $configuration->getClass()) {
return false;
}
return "DateTime" === $configuration->getClass();
}
}
无论如何,一些可能有用的细节是我最近安装了Doctrine并运行命令......
2028 php app/console doctrine:schema:create
2029 php app/console doctrine:generate:entities Auth
在这些命令之后,symfony停止工作。我不知道这是不是一些奇怪的错误。如果您需要更多信息,我可以发布。谢谢你的帮助。
答案 0 :(得分:17)
缺少(或短暂)PHP开启标记也会导致该错误。是的,听起来很有趣,但是如果你只是按照Symfony的例子来复制/粘贴全班,你可能不会注意到(因为我没有)。
答案 1 :(得分:5)
现在有点老了,但是如果其他人通过搜索来到这里: 这无疑是一个缓存问题。手动删除app / cache / dev和app / cache / prod的内容,一切都应解决。
答案 2 :(得分:2)
如果有其他人遇到此问题且无法通过清除缓存而消失,那么我建议您删除整个文件夹,并使用您的编辑器依赖关系并重新执行composer install
。
它对我有用:)。
答案 3 :(得分:0)
我认为Symfony2中存在一个错误。他们最近更新到symfony的新版本(2.3.1),我认为必须破坏它。无论如何,我不得不在AppKernel.php文件中注释//新的Sensio \ Bundle \ FrameworkExtraBundle \ SensioFrameworkExtraBundle()行来摆脱错误。
答案 4 :(得分:0)
确保您的名称空间是在您尝试使用的类中定义的。例如,在我的控制器中,我有:
use Acme\DemoBundle\Amazon\AmazonProductAPI;
这是我的AmazonProductAPI类的正确路径,但在我向该类添加适当的命名空间之前,系统无法识别它:
namespace Acme\DemoBundle\Amazon;
答案 5 :(得分:0)
@MilanG的回答帮助了我!我从
切换了我的PHP配置short_open_tag = Off
到
short_open_tag = On
答案 6 :(得分:0)
我通过删除\
之前的额外Doctrine
来解决此问题,如下所示:
<entity repository-class="ACC\Bundle\MGLBundle\\\Doctrine\ORM\PersonRepository"
name="ACC\Bundle\MGLBundle\Entity\Person" >`
我使用generate:doctrine:entity
实用程序来创建实体以及orm.xml
文件。这个实用程序似乎有一个错误,它在xml文件中添加了额外的\
,如上所述。删除这个额外的反斜杠\
解决了我的问题。因此,在使用命令orm.xml
后检查php app/console doctrine:generate:entity
文件,以确保路径中没有额外的反斜杠。这个错误可能已经在Symfony的更高版本中解决了,但是如果你遇到这个错误,这可能是原因。
答案 7 :(得分:0)
在我的情况下,这是类名中的拼写错误。当类名被命名为AssetsCommand.php
AsssetsCommand
出现错误
确保类文件的基本名称与类名相同。
答案 8 :(得分:0)
感觉就像我读过的每一个答案都会解决但却没有。在我的情况下,它最终是OpCache。忘了我在开发过程中打开了它。解决方案是每次更改代码库或完全禁用OpCache时重新启动PHP-FPM或Httpd(使用mod_php时)。
答案 9 :(得分:0)
当我声明错误的命名空间时,它发生在我身上 示例:命名空间AppBundle \ 控制器;
但该课程就在这条道路上:AppBundle \ RestController
答案 10 :(得分:0)
如果出现此错误,您还应检查拼写错误的文件名。然而,在我的情况下,它说“找到了文件,但课程不在其中, 类名或命名空间可能有拼写错误“,实际上文件名不正确(”From“而不是”Form“)