Cartographie Exception : la Classe n'existe pas de Symfony2 Déploiement
J'ai un Projet de travail sur localhost, mais quand j'ai déployé le projet, j'ai reçu ce message d'erreur et je n'ai aucune idée de ce qui provoque cela se produise.
MappingException: Class 'PremiumPharma\SystemBundle\Entity\User' does not exist
c'est la stacktrace
in /home/sy2/public_html/temp/symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php line 96
at MappingException::nonExistingClass('PremiumPharma\SystemBundle\Entity\User') in /home/sy2/public_html/temp/symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php line 43
at RuntimeReflectionService->getParentClasses('PremiumPharma\SystemBundle\Entity\User') in /home/sy2/public_html/temp/symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php line 267
Edit 1
J'ai remarqué quelques erreurs dans le profiler comme il l'a dit 5 invalide entités et il y avait quelques erreurs de mappage et je me suis fixés. Après re-téléchargement, j'ai toujours le même problème. J'ai aussi essayé de vider le cache mais je continue de recevoir le même message d'erreur.
Edit 2
voici mon appKernal
<?php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new PremiumPharma\SystemBundle\PremiumPharmaSystemBundle(),
new FOS\UserBundle\FOSUserBundle(),
);
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
}
return $bundles;
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
}
}
Modifier 3
Par J. Mose dernier commentaire, c'était un unix/windows conflit que ma machine locale windows et le serveur Unix. J'ai dû renommer tous les fichiers qui correspondent exactement à celui de la classe.
- Avez-vous chauffe le cache à l'aide de php app/console cache:chauffe --env=prod ? Il est nécessaire dans l'environnement de prod...
- Non, je ne l'ai pas je vais le faire dès maintenant et de le re-télécharger.
Vous devez vous connecter pour publier un commentaire.
Avez-vous déployer une version antérieure de cet environnement ?
Si oui, avez-vous supprimer toutes les applications les fichiers avant de les déployer ? Si une ancienne version d'une entité qui n'existe pas dans votre projet de plus (ou renommé), cela peut provoquer ce genre d'erreur de cartographie.
Sinon, vérifiez dans votre AppKernel.php si le bundle avec l'entité est activée sur tous les environnment.
De plus, si l'application est déployée sur un environnement Unix (contre un Windows), vérifiez si votre nom de l'entité est exactement le même que le fichier php (cause de Windows est insensible à la casse)
ce problème a m'est juste arrivé et je l'ai résolu en ajoutant le nom du fournisseur pour le chemin d'accès au répertoire dans le fichier de configuration.fichier yml.
Étape 5: Configurer le FOSUserBundle
app/config/config.yml
fos_user:
changer le appBundle au Vendeur\NameofYourBundle\Entity\Utilisateur
Cette erreur a été de me montrer lorsque je l'ai utilisé EasyAdminBundle et FOSUserBundle avec Symfony 3.3.x .
La solution est simple:
La première est nécessaire vérification de l'app/config/config.yml dans mon cas, l'erreur était le nom du Bundle:
Et après le nettoyage du cache:
C'était ma solution