prototype_denis
@prototype_denis
Symfony

Связка php-fpm и Symfony кэшируют пути на поддоменах?

Похожий вопрос
stackoverflow.com/questions/27637369/nginx-with-mu...

Но там папки, а у меня поддомены...

Есть конфиг nginx где:
Symfony standard app 1 и Symfony standard app 2
2 отдельных приложения на Symfony.
Отличаются только названием домена и корневой директорией.
Первый - основной домен.
Второй - поддомен.

Default - поддомен с одним файлом index.php

# Symfony standard app 1
server {
    server_name example.com;
    root /foo/.../web;
    location / {
        try_files $uri /app.php$is_args$args;
    }
    location ~ ^/(app_dev|config)\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    # ...
}

# Symfony standard app 2
server {
    server_name bar.example.com;
    root /bar/.../web;
    # ...
}

# Default /baz/index.php   <?php echo 1; ?>
server {
    server_name baz.example.com;
    root /baz;
    location / {
        try_files $uri /index.php;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}


При рестарте php-fpm происходит следующее.

При первом переходе по example.com запускается 1 приложение.
Затем в новой вкладке браузера при переходе по bar.example.com запускается 2 приложение, но
всё что в папке vendor (composer) вытаскивается из example.com.
Причём baz.example.com (просто index.php) работает как положено.

Если перезапустить php-fpm.
И первым обновить bar.example.com, то ситуация повторяется для example.com.

Ошибка довольно интересная.

в AppKernel в методе
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Acme\Bundle\AcmeBundle(), 
            // ..
        );


Вылетает ошибка Symfony что, Acme\Bundle\AcmeBundle не найден.
Справедливо для приложения, которое будет проинициализировано вторым.
Chrome, Firefox, curl, wget - неважно...

Но

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        var_dump(new Acme\Bundle\AcmeBundle());
        exit();

        $bundles = array(
            new Acme\Bundle\AcmeBundle(), 
            // ..
        );


Выводит инстанс этого бандла.

Дампил пути и в AppKernel, и bootstrap.php.cache и в других... Пути нормальные.

Для меня это чрезвычайно не понятная ситуация.
  • Вопрос задан
  • 352 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы