Фатальная ошибка развертывания сервера Symfony 2: Он пытается открыть файл localhost
Я создал приложение symfony2 и пытаюсь развернуть его на общем сервере, но получаю фатальную ошибку.
Я предпринял рекомендуемые шаги здесь: Инструменты развертывания
Я обновил зависимости от поставщиков:
php composer.phar install --optimize-autoloader
Я очистил кэш:
php app/console cache:clear --env=prod --no-debug
Я изменил разрешения на сервере для app/cache
и app/logs
Но это не работает. Это ошибка:
Неустранимая ошибка: Неперехваченное исключение "Непредвиденное значение исключения" с сообщением "Не удалось открыть поток или файл "/var/www/cookieboy/app/logs/prod.log": не удалось открыть поток: Нет такого файла или каталога" в /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:71
Трассировка стека:
#0 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37) : Монолог\Обработчик\Обработчик потока->запись(массив)
#1 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php(58) :Монолог\Обработчик\Abstractprocessinghandler->дескриптор(массив)
#2 /homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php(101) :Монолог\Обработчик\Абстрактный обработчик->Handlebatch(Массив)
#3/homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Logger.php (239): Монолог\Обработчик\Скрещенные пальцы->дескриптор(массив)
#4/домашние страницы/32/d453730371/htdocs/cookieboy/поставщик/мо в/homepages/32/d453730371/htdocs/cookieboy/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php в строке 71
И мне было интересно, почему symfony пытается открыть этот файл /var/www/cookieboy/app/logs/prod.log
), который находится по адресу locahost
и не имеет никакого отношения к производственному серверу.
Есть идеи по этому поводу?
3 answers
Я решил проблему, удалив вручную все содержимое внутри app/cache
. Я не знаю почему, но команда php app/console cache:clear --env=prod --no-debug
сделала свою работу не так, как я ожидал.
Спасибо всем вам за ответы.
Вы настроили разрешения?
$ sudo setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX app/cache app/logs
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
Если у вас нет доступа к изменению списка управления доступом каталогов, вам потребуется изменить umask, чтобы каталоги кэша и журналов были доступны для групповой записи или для записи во всем мире (в зависимости от того, находятся ли пользователь веб-сервера и пользователь командной строки в одной группе или нет). Чтобы добиться этого, поместите следующую строку в начале приложения/консоли, web/app.php и web/app_dev.php файлы:
umask(0002); // This will let the permissions be 0775
// or
umask(0000); // This will let the permissions be 0777
В любом случае я рекомендую вам использовать capifony для развертывания. как только вы его настроите. вы забудете о проблемах с развертыванием.
Если вы откроете app_dev.php в вашем любимом текстовом редакторе вы заметите, что одна строка, содержащая массив ip-адресов, разрешена для доступа к среде разработки. Это прокомментировано.
Вы можете отредактировать этот файл локально, а затем загрузить его по ftp. Просто убедитесь, что вы разместите там свой публичный IP-адрес. Затем вы сможете получить доступ к среде разработки при подключении с этого ip-адреса. Это также позволит вам запускать app_dev.php на вашем удаленном хосте точно так же, как вы это делали на своем локальном хосте.
Кроме тебя сможете получить больше информации об отладке. Очевидно, что это недостаток безопасности, и его никогда не бывает в серьезных приложениях, но он действительно распространен при изучении symfony и отсутствии ssh.
Аналогичным образом вы можете запустить config.php на вашем сервере.
(Пожалуйста, обратите внимание, что в этом случае все, кто подключается с этого ip-адреса, смогут получить доступ к среде разработки.)