Intereting Posts
Как назначить переменную php в присваивании значения JavaScript? Как включить данные GET & POST в журнал ошибок PHP Как подсчитать общее количество сообщений из выбранных типов сообщений? Codeigniter URI Class, как я могу использовать – дефис вместо _ подчеркивание? az post-запрос с использованием AJAX в WordPress найти и отредактировать элемент комментария html с помощью php PHP для чтения значения DB, JS для его увеличения, AJAX для сохранения в DB, ​​но почему он по умолчанию 0.0 до обновления страницы? Как получить / установить session_id () или он должен быть сгенерирован автоматически? Логическая ошибка для отображения данных таблицы MySQL API-интерфейс Analytics – Получить данные MCF = пустые результаты Проблема. Объявление XML разрешено только в начале документа. php: Ошибка использования нового DateTime в PHP 5.3 ZF2 + Doctrine2 – Fieldset в Fieldset коллекции в Fieldset не проверяется правильно Не удается отправить письма только в Hotmail. (gmail и т. д. отлично работает) Как получить значения элементов xml?

Работает среда Symfony2, среда prod дает ошибку 404

Недавно я успешно установил Symfony2 на свою машину.

Я могу получить доступ к http:/localhost/app_dev.php (среда dev)

Однако, когда я пытаюсь получить доступ к среде prod:

http:/localhost/app.php

Я получаю следующее сообщение об ошибке в браузере:

К сожалению! Произошла ошибка

Сервер вернул «404 Not Found». Что-то сломалось. Отправьте нам электронное письмо по электронной почте и сообщите нам, что вы делали, когда произошла эта ошибка. Мы исправим его как можно скорее. Извините за причиненные неудобства.

Я проверил очевидное: файл app.php существует в той же папке, что и app_dev.php, поэтому я не знаю, что вызывает это.

У кого-нибудь есть решение исправить это?

[[Редактировать]]

Я очистил кеш, набрав: sudo php app/console cache:clear env=prod no-debug как рекомендовано. Теперь я получаю пустой экран. Беспокойно, что в app / logs / prod.log нет сообщений об ошибках, поэтому я не получил ни малейшего представления о том, что не так (prod-среда все еще работает нормально).

Содержимое моего файла app / config / routing.yml:

 ### fos routing, remove later fos_user_security: resource: "@FOSUserBundle/Resources/config/routing/security.xml" fos_user_profile: resource: "@FOSUserBundle/Resources/config/routing/profile.xml" prefix: /profile fos_user_register: resource: "@FOSUserBundle/Resources/config/routing/registration.xml" prefix: /register fos_user_resetting: resource: "@FOSUserBundle/Resources/config/routing/resetting.xml" prefix: /resetting fos_user_change_password: resource: "@FOSUserBundle/Resources/config/routing/change_password.xml" prefix: /profile ### # Internal routing configuration to handle ESI #_internal: # resource: "@FrameworkBundle/Resources/config/routing/internal.xml" # prefix: /_internal 

Вот мой файл app / config / routing_dev.yml

 _welcome: pattern: / defaults: { _controller: AcmeDemoBundle:Welcome:index } _demo_secured: resource: "@AcmeDemoBundle/Controller/SecuredController.php" type: annotation _demo: resource: "@AcmeDemoBundle/Controller/DemoController.php" type: annotation prefix: /demo _assetic: resource: . type: assetic _wdt: resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" prefix: /_wdt _profiler: resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" prefix: /_profiler _configurator: resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" prefix: /_configurator _main: resource: routing.yml 

Я просто заметил, что у меня нет routing_prod.yml **

(звонит колокольчик) – Symfony2 не поставляется с файлом конфигурации маршрутизации производства?

Содержимое моего конфигурационного файла Apache показано ниже:

 NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /path/to/symfony/web ServerName localhost # Custom log file Loglevel warn ErrorLog /path/localhost.error.log CustomLog /path/localhost.access.log combined <Directory /path/to/symfony/web> AllowOverride None RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L] </Directory> </VirtualHost> 

[[Дальнейшие подробности]]

Содержимое приложения / logs / prod.log

[2012-08-10 18:10:38] security.INFO: заполненный SecurityContext с анонимным токеном [] [] [2012-08-10 18:10:38] request.ERROR: Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException: маршрут не найден для «GET /» (неперехваченное исключение) в /path/to/symfony/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/RouterListener.php line 83 [] []

Вы включили производственную среду и очистили кеш? Запустите консоль и выполните следующие действия:

 app/console --env=prod cache:clear 

Я думаю, что у меня была аналогичная проблема. Я считаю, что разогрев кеша решил мой экземпляр, если он.

 php app/console cache:warmup --env=prod --no-debug 

Недавно установив Symfony 2.2, я столкнулся с этой проблемой, но на самом деле это нормальное поведение. Значение из коробки Symfony 2.x (на момент написания этой статьи) не поставляется с любыми маршрутами / контентом для производственной среды.

В вашем случае, похоже, вы установили пакет Friends of Symfony, который установил некоторые маршруты на вашем маршруте производства ( routing.yml ), но с первого взгляда ни один из маршрутов, похоже, не нацеливается на корень вашей производственной среды, то есть http:/localhost/app.php/ поэтому ожидается, что 404 ожидается. Я не могу быть полностью уверен, хотя, поскольку он импортирует маршруты, чтобы детали были закрыты. Отличный способ проверить ваши маршруты – прочитать « Визуализация и отладка маршрутов», где вы можете узнать о app/console router:debug CLI.

routing.yml – это место по умолчанию для маршрутов в вашей производственной среде (значение routing_prod.yml – это не вещь). Вы заметите, что routing_dev.yml импортирует routing.yml . Это означает, что все, что вы вводите в производство, является (вне коробки) доступным в разработке. Демо-контент, который вы видите, исключительно для среды dev, поэтому вы не видите его в процессе производства. Не стесняйтесь перемещать некоторые вещи вокруг, чтобы удовлетворить ваши потребности, но, как правило, хорошая идея для разработчиков импортировать продукцию, но не наоборот.

Каждый раз, когда вы хотите проверить изменения в своей продукции, вы захотите очистить свой кеш, как рекомендует @tolgap. Производственная среда сильно опирается на предварительно скомпилированный кеш, так что команда заставит ваш производственный кеш обновляться. Окружающая среда Dev всегда обновляет кеш. Понимание этого имеет решающее значение для работы с Symfony. Хотя книга на Symfony.org – отличная точка входа, она не точно ведет домой этот момент о субтитрах кеширования и рабочего процесса. Я был определенно смущен в течение минуты, прежде чем понял взаимосвязь между routing.yml и routing_dev.yml и мягким кэшированием dev по сравнению с жестким кэшированием продукции.

Я удивлен, что никто не сказал вам: у вас нет маршрута для / в среде prod.

напишите это в app / config / routing.yml

  _welcome: pattern: / defaults: { _controller: AcmeDemoBundle:Welcome:index } 

Вам необходимо установить APC для вашего локального сервера, и все будет работать в prod mod для вас. Также попробуйте нажать правильную базу данных в параметрах.yml, потому что dev добавляет DATABASENAME_dev.

Я попробовал решение, которое @gilden дал в его комментарии; оно работает.

Я запустил php bin/console cache:clear --env=prod вместо rm -rf app/cache/* .

Сегодня у меня была такая же проблема, и я попробовал различные решения. До тех пор, пока я не вспомнил, что важно, чтобы служба apache mod_rewrite была включена. Для этого выполните следующую команду (на Ubuntu)

 sudo a2enmod rewrite 

Затем перезапустите сервер

 sudo service apache2 restart 

Я надеюсь, что кто-то может быть полезным. С уважением!

Моя папка с кешем Symfony не была доступна для записи. Он работал, когда я сделал полный каталог кеша и его файлы доступными для записи.

 sudo chmod -R 777 . 

(Agrega esto dentro del archivo routing_dev.yml) Добавьте это в routing_dev.yml

 _wellcome: pattern: / defaults: { _controller:AppBundle:Default:index }