Ресурсы symfony2 предназначены для папки сервера / www, а не для папки / web symfony при развертывании в рабочей среде

У меня есть некоторые проблемы с развертыванием приложения 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 использует ресурсы здесь?

1

Решение

Вы пытались использовать отладчик маршрутизации командной строки Symfony?

php app/console debug:router

Это выведет все маршруты, о которых знает приложение Symfony, и вы можете попробовать передать их в grep чтобы увидеть, пытаетесь ли вы использовать неправильный путь для перехода по маршруту _console.

php app/console debug:router | grep _console

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]