У меня есть некоторые проблемы с развертыванием приложения Symfony 2. Я импортировал все файлы, которые мне нужны, на общий сервер OVH, но произошли некоторые ошибки, например, не найдены файлы css и js (например, внутренняя ошибка сервера) или ошибка типа Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://my-server/css/458dafd_bootstrap-theme.min_1.css"
,
Обратите внимание, что я установил CoresphereBundle для того, чтобы в моем браузере была консоль, когда мое приложение загружено на мой сервер, я имею доступ к консоли только в среде разработчика.
Это шаг за шагом, что я сделал для развертывания моего приложения:
1 Я обновил свое приложение и поставщиков с помощью composer (потому что у меня нет способов установить composer на мой сервер)
composer.phar update
2 Я очищаю кеш разработчика php app/console cache:clear
3 Я очищаю кеш продукта php app/console cache:clear --env=prod --no-debug
4 Я устанавливаю активы php app/console assets:install web
5 Я сбрасываю активы php app/console assetic:dump web
6 Я загрузил приложение Symfony на свой сервер.
7 Как только файлы загружены в web/app.php
Я разрешаю
отладка продукта
$kernel = new AppKernel('prod', true);
8 Затем в web/config.php
Я удаляю этот блок
// …
if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
'127.0.0.1',
'::1',
))) {
header('HTTP/1.0 403 Forbidden');
exit('This script is only accessible from localhost.');
}
Итак, на моем сервере, если я хотел бы перейти на http://my-server/web/config.php
это работает хорошо, поэтому я вижу, совместим ли мой сервер с Symfony. единственное, что появляется, это Set short_open_tag to off in php.ini*.
9 Я установил права доступа для app/cache
а также app/log
папки в 777 на моем сервере это позволяет приложениям писать в эти папки.
10 В web/app_dev.php
Я пишу этот код, чтобы разрешить режим dev для моего IP-адреса и получить доступ к пакету консоли.
// …
if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
'127.0.0.1',
'::1',
'121.457.719.2' //a random ip adress it's just for you to understand
))) {
header('HTTP/1.0 403 Forbidden');
exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}
11 Таким образом, у меня есть доступ к среде разработки на моем сервере, все работает хорошо, и никаких ошибок здесь не произошло. Чтобы получить доступ к пакету консоли, следуя документации к пакету, я должен написать http://my-server/web/app_dev.php/_console
(см. код маршрутизации здесь):
_console:
resource: "@CoreSphereConsoleBundle/Resources/config/routing.yml"prefix: /_console
Но таких маршрутов не существует. Если я напишу этот URL, в моем браузере ничего не появится:
Тем не менее, по config.php
У меня есть доступ к app_dev.php
следуя Bypass configuration and go to the Welcome page
ссылка на сайт:
Я нажимаю на ссылку, и я прибыл на app_dev.php
, Как я уже говорил, в этой среде не было ошибок, кроме консольного маршрута. Но я мог получить доступ к консоли, нажав на логотип консоли под панелью инструментов отладки Symfony:
Это URL для консоли, когда я нажимаю на логотип под панелью инструментов отладки Symfony: http://my-server/web/app_dev.php//_console/_console
Хотелось бы понять почему?
Затем, когда я хотел бы сделать некоторые команды, произошла другая ошибка: [error] Internal Server Error
в консоли:
Если я пытаюсь использовать отладчик маршрутизатора php app/console debug:router
, У меня есть это:
и с php app/console debug:router | grep _console
:
Итак, у меня есть проблемы с моим приложением Symfony.
ОБНОВИТЬ
Я решил проблему с комплектом консоли. На самом деле мой сервер не использует ту же версию php моего приложения Symfony, я должен установить это в .ovhconfig
в корне моего /www
папка.
/www/.ovhconfig
:
app.engine=php
app.engine.version=5.5
http.firewall=none
environment=production
Теперь, когда я хотел бы получить доступ к производственной среде, у меня есть эти ошибки, касающиеся всех моих файлов активов (CSS / JS / изображения, а 404 не найдено):
Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найдено) ->
http://my-server.com/bundles/fosjsrouting/js/router.js
Uncaught ReferenceError: fos не определено -> маршрутизация: 1
Не удалось загрузить ресурс: сервер ответил с состоянием 404 (не найдено)
->http://my-server.com/css/45898d_dataTables.min_7.css
Я не очень понимаю, файлы действительно находятся в корне приложения, например, у меня нет папки css или js или т. Д. В http://my-server.com/
, Эти папки находятся в http://my-server.com/web/
, В чем проблема?
Когда я получаю доступ к консоли, это команда, которую я сделал:
1 cache:clear
2 assets:install web
3 assetic:dump web
РЕДАКТИРОВАТЬ: решение работает
Я понимаю, что активы нацелены на /css
/js
/images
и т.д. в корне моего сервера, поэтому я заменяю файлы css и js в корень /www
папка сервера, e-g в /www
папка моего сервера у меня такая:
//my server
/.ssh
/www /*http://my-server.com/...*/
/app/
/bin/
/css/
/fonts/
/images/
/js/
/src/
/vendor/
/web/
/.htaccess
/.ovhconfig
/composer.json
/composer.lock
/composer.phar
Почему мое приложение Symfony использует ресурсы здесь?
Вы пытались использовать отладчик маршрутизации командной строки Symfony?
php app/console debug:router
Это выведет все маршруты, о которых знает приложение Symfony, и вы можете попробовать передать их в grep
чтобы увидеть, пытаетесь ли вы использовать неправильный путь для перехода по маршруту _console.
php app/console debug:router | grep _console
Других решений пока нет …