В прошлом я много использовал Symfony, и у меня не было много проблем. Я пытался развернуть его на другом сервере (Ubuntu 16 с Apache) и у меня много проблем.
Я получаю 500 ошибок сейчас (https://bereanboard.com/app_dev.php). То, что я пытался это пойти в *.com/config.php
а также *.com/app_dev.php
чтобы увидеть проблемы (мне пришлось временно закомментировать раздел, запрещающий доступ не из localhost). Я также проверял Apache error.log
и Symfony’s var/logs/prod.log
,
Имейте в виду, что он отлично работает на локальном MAMP и на моем предыдущем CentOS.
Во-первых, я впервые сталкиваюсь с проблемами прав доступа для var / cache и var / logs. Это было довольно легко исправить с помощью таких команд, как chmod -R 777 var/cache
, Но почему эта проблема возникла только на этом новом сервере? Во всяком случае, config.php на новом сервере теперь говорит мне «Все проверки пройдены».
Во-вторых, в var / logs / prod.log я получаю всевозможные сообщения: «Не могу найти класс, вы забыли выражение« use »?» ошибки. Некоторые из них для расширения ветки AppBundle/Twig/AppExtension.php
,
Вот некоторые критические ошибки:
request.CRITICAL: необработанное исключение PHP InvalidArgumentException:
«Класс» AppBundle \ Controller \ HomeController «не существует.» в
/home/travis/var/cache/prod/classes.php строка 4872
{«исключение»: «[объект] (InvalidArgumentException (код: 0): класс
\ «AppBundle \ Controller \ HomeController \» не существует. в
/home/travis/var/cache/prod/classes.php:4872) «} []
а также
php.CRITICAL: класс ‘AppBundle \ Twig \ AppExtension’ не найден
{ «Исключение»: «[объект] (Symfony \ Component \ Debug \ Exception \ FatalThrowableError (код: 0):
Класс ‘AppBundle \ Twig \ AppExtension’ не найден в
/home/travis/var/cache/prod/appProdProjectContainer.php:2881) «} [] [2017-01-19 06:35:03] request.CRITICAL: Uncaught PHP Exception
Symfony \ Component \ Debug \ Exception \ ClassNotFoundException: «Попытка
загрузить класс «AppExtension» из пространства имен «AppBundle \ Twig». Ты
забыть выражение «использовать» для другого пространства имен? «в
/home/travis/var/cache/prod/appProdProjectContainer.php строка 2881
{ «Исключение»: «[объект] (Symfony \ Component \ Debug \ Exception \ ClassNotFoundException (код:
0): Попытка загрузить класс \ «AppExtension \» из пространства имен
\ «AppBundle \ Twig \». \ NВы забыли оператор \ «использовать \» для другого
Пространство имен? в
/home/travis/var/cache/prod/appProdProjectContainer.php:2881) «} [] [2017-01-19 06:35:03] request.CRITICAL: При обработке возникает исключение
исключение
(Symfony \ Component \ Cache \ Exception \ InvalidArgumentException: Cache
каталог не доступен для записи
(/ home / travis / var / cache / prod / pool / CtBqbs + VrF) в
/home/travis/var/cache/prod/classes.php строка 1194)
{ «Исключение»: «[объект] (Symfony \ Component \ Cache \ Exception \ InvalidArgumentException (код:
0): каталог кэша недоступен для записи
(/ home / travis / var / cache / prod / pool / CtBqbs + VrF) в
/home/travis/var/cache/prod/classes.php:1194) «} []
Также стоит упомянуть, что это свежий, пустой проект, сделанный из команды symfony new project
делает Работа.
*РЕДАКТИРОВАТЬ
Я посоветовался эти документы Symfony. Я перепробовал все способы очистки кэша, которые смог найти.
*РЕДАКТИРОВАТЬ
Вот services.yml
services:
app.twig_extension:
class: AppBundle\Twig\AppExtension
arguments: ["@doctrine.orm.entity_manager", "@security.token_storage"]
public: false
tags:
- { name: twig.extension }
Похоже, что существует проблема доступа к вашему веб-серверу.
Проверьте пользователя, который запускает apache на Centos
# egrep -i '^user|^group' /etc/httpd/conf/httpd.conf
Должно вернуться apache
Тогда дайте хорошую привилегию /home/travis
каталог:
Вариант 1: Вы можете посмотреть Stack Echange / AskUbuntu и адаптировать его с apache
пользователь вместо www-data
Вариант 2. При первом варианте, если вы создали папку, Apache не может писать в нее. Это можно «исправить», установив umask 0007 и добавив себя (travis) в группу Apache, чтобы вновь созданные файлы и папки были доступны группе для записи.
Вариант 2 лучше, если у вас достаточно прав для смены маски.
Попробуйте очистить кеш:
php bin/console cache:clear --env=prod
и установите права доступа к файлам:
chmod -R 777 var/cache
chmod -R 777 var/logs
chmod -R 777 var/sessions
надеюсь, это поможет вам.
Я сталкивался с той же проблемой и раньше. Вам нужно будет полностью удалить папку продавца
rm -R vendor /
и заново установите все зависимости снова.
php composer.phar установить
Это решит проблему.