Symfony assets: исключение во время выполнения дампа

Я приступаю к развертыванию своего приложения Symfony с помощью Capifony. Когда Capifony выполняет assets:dump, я получаю исключение во время выполнения.

[RuntimeException]
Невозможно записать файл {path}/releases/20130314071536/app/../web/js/.

Я попытался выполнить команду вручную и получил такое же исключение.
Затем я попробовал команду с параметром --verbose и понял, что все файлы с исходным путем, в котором есть точка, были написаны без имени файла, только расширение. Исключение возникает при нажатии имени файла без расширения (в данном случае Makefile) и попытке записать файл «.». (только точка).

В другом домене на том же сервере у меня есть точно такой же код, но развернутый вручную. Там я не получаю эту ошибку. Так что это не может быть проблемой с версией PHP. Я также проверил версии Assetic и Assetic-Bundle, и они одинаковы.

Что может быть причиной того, что активы работают по-другому?

РЕДАКТИРОВАТЬ:
Я забыл упомянуть, что он также правильно работает на моей машине разработки.

РЕДАКТИРОВАТЬ 2:
Начинается сбой в файле

РЕДАКТИРОВАТЬ 3:
Я только что понял, что он отлично работает для среды разработки... но для --env=prod возникает проблема

web/bundles/assets/assets/images/icons/aws.png

файл, который я не использую ни в одном шаблоне

Stacktrace из ошибки

Exception trace:
 () at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Command/DumpCommand.php:249
 Symfony\Bundle\AsseticBundle\Command\DumpCommand->doDump() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Command/DumpCommand.php:187
 Symfony\Bundle\AsseticBundle\Command\DumpCommand->dumpAsset() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Command/DumpCommand.php:64
 Symfony\Bundle\AsseticBundle\Command\DumpCommand->execute() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:238
 Symfony\Component\Console\Command\Command->run() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:192
 Symfony\Component\Console\Application->doRun() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:78
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:105
 Symfony\Component\Console\Application->run() at /home/yanic.info/domains/pe.yanic.info/public_html/releases/20130318143912/app/console:33

config.yml

# Twig Configuration
twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%
    form:
        resources: [HomeBundle:Form:fields.html.twig]
# Assetic Configuration
assetic:
    write_to: "%kernel.root_dir%/../web"
    debug:          %kernel.debug%
    use_controller: false
    bundles:        ['YanicSecurityBundle','HomeBundle','UsersBundle','CmsBundle','AssetsBundle','FormBundle','TranslationBundle','EventBundle','ShopBundle','NewsletterBundle','IssueBundle','ProjectBundle']
    filters:
        cssrewrite: ~

РЕДАКТИРОВАТЬ 4:
При поиске aws.png (первый поврежденный результат) в файлах кеша есть 2 результата:

/Applications/MAMP/htdocs/symfony-standard-2.1/app/cache/dev/appDevUrlGenerator.php:
  112          '_assetic_e4d7f8d' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => 'e4d7f8d',    'pos' => NULL,    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/assets/images/icons/arrow_rotate_clockwise.png',    ),  ),),
  113          '_assetic_e4d7f8d_0' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => 'e4d7f8d',    'pos' => '0',    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/assets/images/icons/arrow_rotate_clockwise_arrow_rotate_clockwise_1.png',    ),  ),),
  114:         '_assetic_e1ec2e3' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => 'e1ec2e3',    'pos' => NULL,    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/assets/images/icons/aws.png',    ),  ),),
  115          '_assetic_e1ec2e3_0' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => 'e1ec2e3',    'pos' => '0',    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/assets/images/icons/aws_aws_1.png',    ),  ),),
  116          '_assetic_490c282' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => '490c282',    'pos' => NULL,    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/assets/images/icons/cancel.png',    ),  ),),
  ...
  874          '_assetic_13192a1' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => '13192a1',    'pos' => NULL,    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/images/icons/arrow_rotate_clockwise.png',    ),  ),),
  875          '_assetic_13192a1_0' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => '13192a1',    'pos' => '0',    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/images/icons/arrow_rotate_clockwise_arrow_rotate_clockwise_1.png',    ),  ),),
  876:         '_assetic_3d6d4c9' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => '3d6d4c9',    'pos' => NULL,    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/images/icons/aws.png',    ),  ),),
  877          '_assetic_3d6d4c9_0' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => '3d6d4c9',    'pos' => '0',    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/images/icons/aws_aws_1.png',    ),  ),),
  878          '_assetic_5ea17b1' => array (  0 =>   array (  ),  1 =>   array (    '_controller' => 'assetic.controller:render',    'name' => '5ea17b1',    'pos' => NULL,    '_format' => 'png',  ),  2 =>   array (  ),  3 =>   array (    0 =>     array (      0 => 'text',      1 => '/js/images/icons/cancel.png',    ),  ),),

/Applications/MAMP/htdocs/symfony-standard-2.1/app/cache/dev/appDevUrlMatcher.php:
  517  
  518          // _assetic_e1ec2e3
  519:         if ($pathinfo === '/js/assets/images/icons/aws.png') {
  520              return array (  '_controller' => 'assetic.controller:render',  'name' => 'e1ec2e3',  'pos' => NULL,  '_format' => 'png',  '_route' => '_assetic_e1ec2e3',);
  521          }
  ...
 4327  
 4328          // _assetic_3d6d4c9
 4329:         if ($pathinfo === '/js/images/icons/aws.png') {
 4330              return array (  '_controller' => 'assetic.controller:render',  'name' => '3d6d4c9',  'pos' => NULL,  '_format' => 'png',  '_route' => '_assetic_3d6d4c9',);
 4331          

РЕДАКТИРОВАТЬ 5:
В соответствии с рекомендациями @cheesemacfly я удалил пакет Hearsay_require_js, и проблема исчезла. Теперь, когда я знаю, что виновато в ошибке, мне нужно знать, почему это происходит только на промежуточном сервере и при развертывании с помощью Capifony.


person Michi    schedule 14.03.2013    source источник
comment
Было бы полезно, если бы вы могли указать строки, в которых активы используются в вашем проекте.   -  person cheesemacfly    schedule 18.03.2013
comment
@cheesemacfly Вы имеете в виду из шаблонов Twig?   -  person Michi    schedule 18.03.2013
comment
Если вы используете их только в своих шаблонах веток, то да! (по крайней мере, на том, где у вас возникла проблема)   -  person cheesemacfly    schedule 18.03.2013
comment
@cheesemacfly Он снова работает после переустановки всего домена на сервере.   -  person Michi    schedule 18.03.2013
comment
Я все еще удивлен, что актив пытается обработать Makefile. Это предназначено?   -  person cheesemacfly    schedule 18.03.2013
comment
@cheesemacfly нет, это не предназначено... меня это тоже удивило. Я предположил, что он обрабатывает все в каталоге активов   -  person Michi    schedule 18.03.2013
comment
Снова ошибка... Раньше я тестировал в режиме разработки, и это сработало... теперь пытаюсь с --env=prod и снова терпит неудачу   -  person Michi    schedule 18.03.2013
comment
Вы знаете, где этот Makefile? Можете ли вы опубликовать активный код, который, как вы подозреваете, обрабатывает его?   -  person cheesemacfly    schedule 18.03.2013
comment
Это файл web/bundles/assets/assets/vendors/moment/Makefile, но я не использую его ни в одном шаблоне. Обновлю свой ответ трассировкой стека из ошибки.   -  person Michi    schedule 18.03.2013
comment
Вы запускаете команду с полными правами на папку/подпапки?   -  person cheesemacfly    schedule 18.03.2013
comment
@cheesemacfly Да .. чтобы убедиться, что я пытался использовать пользователя root ... но не помогло   -  person Michi    schedule 18.03.2013
comment
Тогда трудно сказать... Можете ли вы показать нам свои шаблоны веток, касающиеся разделов и конфигурации?   -  person cheesemacfly    schedule 18.03.2013
comment
@cheesemacfly Обновил мой вопрос с помощью config.yml   -  person Michi    schedule 18.03.2013
comment
Был ли ваш проект запущен с Symfony 2.0 и обновлен до версии 2.1?   -  person cheesemacfly    schedule 18.03.2013
comment
@cheesemacfly Да, но я обновился довольно давно. Но всегда стоит проверить, не осталось ли чего. На что мне смотреть?   -  person Michi    schedule 18.03.2013
comment
На самом деле не уверен, но я бы сказал, что раздел use_controller: false вашего файла config.yml должен больше походить на тот, что здесь: symfony.com/doc/2.1/reference/configuration/assetic.html   -  person cheesemacfly    schedule 18.03.2013
comment
@cheesemacfly Попробовал, но проблема та же :-(   -  person Michi    schedule 18.03.2013
comment
Можете ли вы отследить, в каком шаблоне возникает эта ошибка, и опубликовать код здесь?   -  person cheesemacfly    schedule 19.03.2013
comment
@cheesemacfly Ошибка возникает на ресурсах, которые не используются ни в одном шаблоне.   -  person Michi    schedule 19.03.2013
comment
Нигде в вашем коде вы или установленный вами пакет не используете этот файл aws.png? Что если запустить поиск во всех файлах вашего проекта?   -  person cheesemacfly    schedule 19.03.2013
comment
@cheesemacfly Только что провел поиск по всему проекту и ничего не дал для aws.png :-(   -  person Michi    schedule 19.03.2013
comment
Может быть, какое-то расширение мешает? Я только что понял, что неправильные файлы - это те, которые туда помещает earsay_require_js.   -  person Michi    schedule 19.03.2013
comment
В моем предыдущем поиске я исключил файлы кеша ... когда я их включаю, есть 2 результата ... Я добавляю это к своему вопросу.   -  person Michi    schedule 19.03.2013
comment
Я действительно не знаю этот пакет, но что, если вы удалите его в качестве теста? Для чего и где вы его используете?   -  person cheesemacfly    schedule 19.03.2013
comment
@cheesemacfly Постараюсь удалить его. Пакет предназначен для использования require.js... загрузки javascript в стиле AMD.   -  person Michi    schedule 20.03.2013
comment
@cheesemacfly Удалил расширение, и теперь проблема исчезла. Полезно знать, но мне нужен этот пакет, поэтому нужно решить проблему :-(   -  person Michi    schedule 20.03.2013
comment
Может ли тот факт, что это происходит только в определенной среде, быть связан с использованием ?, как в filter='?yourfilter', или в вашем проекте нет такого кода? Можете ли вы показать пример использования этого пакета?   -  person cheesemacfly    schedule 20.03.2013
comment
@cheesemacfly Я еще не использую фильтры в проекте... обновлю свой вопрос, чтобы показать использование плохого пакета   -  person Michi    schedule 21.03.2013
comment
Может что-то с разрешения?   -  person Dickriven Chellemboyee    schedule 01.04.2013
comment
@Chellem Это была моя первая мысль, но все развертывается с использованием одного и того же пользователя. Чтобы убедиться, что я выполнил команду как пользователь root, и это не имело никакого значения :-(   -  person Michi    schedule 02.04.2013


Ответы (3)


Попробуйте заново создать каталоги кеша.

Вы можете столкнуться со странным поведением, когда ваш кеш не синхронизирован.

Чтобы очистить кеш:

rm -rf app/cache/*

sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache

or

rm -rf app/cache/*

sudo setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX app/cache
sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache
person Daniel P    schedule 02.07.2013
comment
Привет @ daniel-p. Capifony использует вновь созданный каталог кеша для каждого развертывания... так что это не может быть так. - person Michi; 02.07.2013
comment
это не очищается ... весь проект переходит во вновь созданный каталог, на который затем делается символическая ссылка ... поэтому каталог кеша также является новым. - person Michi; 05.07.2013

проверьте свои разрешения, кажется, у вас нет прав на запись на

Unable to write file {path}/releases/20130314071536/app/../web/js/.

посмотрите здесь: http://symfony.com/doc/2.0/book/installation.html Раздел «Настройка разрешений».

Один вопрос...

Можете ли вы загрузить свою конфигурацию deploy.rb? вы установили пользовательский, корневой режим ...?

Вы также можете быть более подробным, раскомментировав следующую строку

logger.level = Logger::MAX_LEVEL

вы увидите шаг за шагом развертывание

person Kioko Kiaza    schedule 11.04.2013
comment
Это не проблема с разрешением, поскольку я пытался выполнить от имени пользователя root и с той же проблемой. Также основная проблема заключается в том, что команда удаляет имена файлов, оставляя только расширение. - person Michi; 12.04.2013

Как сказали другие пользователи, это проблема с разрешениями.

rm -rf symfonyProject/app/cache/*

chmod -R 755 symfonyProject/

chmod -R 777 symfonyProject/app/cache/

chmod -R 777 symfonyProject/app/logs/

Надеюсь, поможет

person Mirza Selimovic    schedule 29.10.2013
comment
Привет @mirza-selimovich. Дело не в разрешениях, так как я пытался выполнить от имени пользователя root, и произошло то же самое... смотрите мои обновления! - person Michi; 29.10.2013