Хорошо, я был на этом в течение двух часов, и я вижу, что у некоторых других людей была эта ошибка, но я не могу показать свои причины / разрешения с моей.
Неустранимая ошибка: require () [function.require]: Невозможно переопределить класс companycontroller в /var/www/biztv_symfony/vendor/symfony/src/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php в строке 55
Терминал дает лучшее сообщение об ошибке, указывающее мне на конечную статью фактического класса, с которой у него возникают проблемы (попытка повторного использования).
Если я удалю или переименую файл companyController.php, он выдаст ошибку Symfony2, в которой говорится, что она искала класс, но не нашла его там, где ожидалось.
Если я верну файл обратно на место, apache выдает ошибку php, говорящую, что класс companyController не может быть обновлен.
У меня только один раз ?!
Вот весь класс … если у кого есть терпение, чтобы попытаться помочь мне …
<?php use Symfony\Bundle\FrameworkBundle\Controller\Controller; use BizTV\BackendBundle\Entity\company; use BizTV\BackendBundle\Form\companyType; /** * company controller * */ class companyController extends Controller { /** * Lists all company entities. * */ public function indexAction() { $em = $this->getDoctrine()->getEntityManager(); $entities = $em->getRepository('BizTVBackendBundle:company')->findAll(); return $this->render('BizTVBackendBundle:company:index.html.twig', array( 'entities' => $entities )); } /** * Finds and displays a company entity. * */ public function showAction($id) { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository('BizTVBackendBundle:company')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find company entity.'); } $deleteForm = $this->createDeleteForm($id); return $this->render('BizTVBackendBundle:company:show.html.twig', array( 'entity' => $entity, 'delete_form' => $deleteForm->createView(), )); } /** * Displays a form to create a new company entity. * */ public function newAction() { $entity = new company(); $form = $this->createForm(new companyType(), $entity); return $this->render('BizTVBackendBundle:company:new.html.twig', array( 'entity' => $entity, 'form' => $form->createView() )); } /** * Creates a new company entity. * */ public function createAction() { $entity = new company(); $request = $this->getRequest(); $form = $this->createForm(new companyType(), $entity); $form->bindRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getEntityManager(); $em->persist($entity); $em->flush(); /* Create adminuser for this company to go along with it */ $userManager = $this->container->get('fos_user.user_manager'); $user = $userManager->createUser(); //make password (same as username) $encoder = $this->container->get('security.encoder_factory')->getEncoder($user); //get encoder for hashing pwd later $tempPassword = $entity->getCompanyName(); //set password to equal company name //Get company $tempCompanyId = $entity->getId(); //get the id of the just-inserted company (so that we can retrieve that company object below for relating it to the user object later) $tempCompany = $em->getRepository('BizTVBackendBundle:company')->find($tempCompanyId); //get the company object that this admin-user will belong to $user->setUsername($entity->getCompanyName() . "/admin"); //set username to $company/admin $user->setEmail('admin.'.$entity->getCompanyName().'@example.com'); //set email to non-functioning (@example) $user->setPassword($encoder->encodePassword($tempPassword, $user->getSalt())); //set password with hash $user->setCompany($tempCompany); //set company for this user $user->setConfirmationToken(null); //we don't need email confirmation of account $user->setEnabled(true); //without a confirmation token, we of course also need to flag the account as enabled manually $user->addRole('ROLE_ADMIN'); $userManager->updateUser($user); return $this->redirect($this->generateUrl('company_show', array('id' => $entity->getId()))); } return $this->render('BizTVBackendBundle:company:new.html.twig', array( 'entity' => $entity, 'form' => $form->createView() )); } /** * Displays a form to edit an existing company entity. * */ public function editAction($id) { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository('BizTVBackendBundle:company')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find company entity.'); } $editForm = $this->createForm(new companyType(), $entity); $deleteForm = $this->createDeleteForm($id); return $this->render('BizTVBackendBundle:company:edit.html.twig', array( 'entity' => $entity, 'edit_form' => $editForm->createView(), 'delete_form' => $deleteForm->createView(), )); } /** * Edits an existing company entity. * */ public function updateAction($id) { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository('BizTVBackendBundle:company')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find company entity.'); } $editForm = $this->createForm(new companyType(), $entity); $deleteForm = $this->createDeleteForm($id); $request = $this->getRequest(); $editForm->bindRequest($request); if ($editForm->isValid()) { $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('company_edit', array('id' => $id))); } return $this->render('BizTVBackendBundle:company:edit.html.twig', array( 'entity' => $entity, 'edit_form' => $editForm->createView(), 'delete_form' => $deleteForm->createView(), )); } /** * Deletes a company entity. * */ public function deleteAction($id) { $form = $this->createDeleteForm($id); $request = $this->getRequest(); $form->bindRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository('BizTVBackendBundle:company')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find company entity.'); } $em->remove($entity); $em->flush(); } return $this->redirect($this->generateUrl('company')); } private function createDeleteForm($id) { return $this->createFormBuilder(array('id' => $id)) ->add('id', 'hidden') ->getForm() ; } }
Таким образом, оказывается, что это была клоунская опечатка от moi.
Но для тех, кто сталкивается с этим сообщением об ошибке в Symfony2:
Неустранимая ошибка: require () [function.require]: невозможно обновить класс …
Вот подсказка: проверьте, случайно ли вы удалили или опечатали: пространство имен в файле, которое содержит определение класса, которое php утверждает, что оно пытается переопределить.
Сообщение об ошибке php на самом деле не дает вам подсказки для поиска … =)
Класс redeclare – Вероятно, есть классы буксировки с тем же именем
Иногда, если вы соблазнены копией / вставкой, проверьте свои имена классов, пространства имен и другие «опечатки», которые могли произойти. (копирование / вставка – черт программирования: /)
Подобно другим ответам, в моем случае я переименовал класс, но не содержащий файл. Каждый класс должен быть объявлен в файл с тем же именем. Так что проверьте это тоже.
В моем случае это был оператор use
в пространстве имен, который использовал одно и то же имя класса (но другой путь).
namespace Bsz\RecordTab; use \Bsz\Config\Libraries; // I used this in constructor class Libraries { ... }
Без использования директивы, она работала