Конфигурация Symfony Apache, когда app_dev находится в подкаталоге - PullRequest
0 голосов
/ 27 декабря 2018

Эй, ребята, я запускаю приложение Symfony 3 на моей локальной машине wondows.Подается с сервером XAMPP.Приложение работает нормально, когда я захожу на мой локальный URL.Проблема в том, что я не могу запустить его в среде разработчика.

Структура папок приложения Symfony отличается от той, к которой я привык.App_dev.php находится в папке интрасети.

enter image description here

Это папка интрасети

enter image description here

Мой текущий конфигурационный файл apache выглядит следующим образом:

<VirtualHost *:443>
    ServerName quebecenreseau.ca
    ServerAlias www.quebecenreseau.ca

    SSLEngine on
    SSLCertificateFile "crt/quebecenreseau.ca/server.crt"
    SSLCertificateKeyFile "crt/quebecenreseau.ca/server.key"

    DocumentRoot C:\xampp\htdocs\quebecenreseau
    <Directory C:\xampp\htdocs\quebecenreseau>
        AllowOverride All
        Order Allow,Deny
        Allow from All
    </Directory>

    # uncomment the following lines if you install assets as symlinks
    # or run into problems when compiling LESS/Sass/CoffeeScript assets
    # <Directory /var/www/project>
    #     Options FollowSymlinks
    # </Directory>

    ErrorLog C:\xampp\apache\logs\project_error.log
    CustomLog C:\xampp\apache\logs\project_access.log combined
</VirtualHost>

Я не уверен, как сконфигурировать блок VirtualHost, чтобы заставить среду dev работать в обоих, корневой каталог кака также каталог внутренней сети, который служит администратором веб-сайта.

Если я изменю строку DocumentRoot следующим образом:

DocumentRoot C:\xampp\htdocs\quebecenreseau\intranet\app_dev.php

CSS-файлы моего приложения не загружаются и моя внутренняя сеть обслуживаетсяна корневом уровне.Как я могу настроить свою локальную среду для загрузки app_dev.php?Кроме того, моя среда разработки находится на сервере Centos, поэтому я действительно не хочу связываться с программой Prod.

На случай, если вы захотите узнать, что находится внутри файла index.php на корневом уровне, это:

<?php

/**
 * Start session
 */

session_start();

/**
 * Load configuration and router
 */

require 'classes/Router.php';
require 'classes/Database.php';
require 'classes/Main.php';

/**
 * Load helpers
 */

require 'helpers/phpmailer/class.phpmailer.php';
require 'helpers/GUMP.php';
require 'helpers/MailChimp.php';


/**
 * Load models
 */

require 'models/Article.php';
require 'models/Formation.php';
require 'models/SAE.php';


/**
 * Load routes
 */

require 'router.php';


/**
 * Match requests
 */

$match = $router->match();

if( $match && is_callable( $match['target'] ) ) {
    // call function related to matched route
    call_user_func_array( $match['target'], $match['params'] );
} else {
    // no route was matched
    header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}

1 Ответ

0 голосов
/ 28 декабря 2018

Попробуйте изменить C:\xampp\htdocs\quebecenreseau на C:\xampp\htdocs\quebecenreseau\intranet\web.если я хорошо помню, корень документа должен указывать на папку, в которой расположены app.php и app_dev.php.

ОБНОВЛЕНИЕ:

ОК.Теперь немного понятнее.Вы не запускаете чистый проект Symfony в Prod.Кто-то взял некоторые базовые классы у Symfony и использовал их для маршрутизации запросов и обработки соединений с БД.

Сейчас у вас фактически два проекта.Простой проект PHP в главной папке и проект Symfony в папке интрасети.

Итак, давайте начнем работать над этим.Во-первых, вы должны знать, что для правильной работы проекта Symfony в качестве основного приложения корневая папка должна быть папкой «web».

Итак:

  1. Создайте новый проект Symfony в папке quebecenreseau.
  2. Переместите существующие ресурсы в новую папку активов
  3. Проверьте, еслисуществующие контроллеры нуждаются в некоторой настройке для отображения активов.

Из того, что я вижу из структуры, вам нужно будет внести минимальные изменения, чтобы она заработала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...