2013-07-24 3 views
4

Я разрабатываю свое первое приложение Symfony 2, и я пытаюсь Uglify свести к минимуму мои .css. Проблема заключается в том, что, когда я выполняю команду:Symfony 2 assetic: dump UglifyCss вызывает [Symfony Component Process Exception RuntimeException] Процесс сигнализирован с сигналом «5»

$ /Applications/mampstack-5.4.17-0/php/bin/php app/console assetic:dump --verbose 

я получаю следующий результат:

Dumping all dev assets. 
Debug mode is on. 

17:22:09 [file+] /Users/bender22/Proyectos/ETraining/app/../web/examlayout.css 
     /Users/bender22/Proyectos/ETraining/app/../web/bundles/exam/css/exam.css 
     /Users/bender22/Proyectos/ETraining/app/../web/bundles/exam/css/exam3.css 

[Symfony \ Component \ Process \ Exception \ RuntimeException]
процесс был сигнал с сигналом "5".

Исключение трассировки:

() at /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Process/Process.php:428 
Symfony\Component\Process\Process->wait() at /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Process/Process.php:204 
Symfony\Component\Process\Process->run() at /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Filter/UglifyCssFilter.php:106 
Assetic\Filter\UglifyCssFilter->filterDump() at /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Filter/FilterCollection.php:69 
Assetic\Filter\FilterCollection->filterDump() at /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Asset/BaseAsset.php:108 
Assetic\Asset\BaseAsset->dump() at /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Asset/AssetCollection.php:151 
Assetic\Asset\AssetCollection->dump() at /Users/bender22/Proyectos/ETraining/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Command/DumpCommand.php:222 
Symfony\Bundle\AsseticBundle\Command\DumpCommand->doDump() at /Users/bender22/Proyectos/ETraining/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Command/DumpCommand.php:162 
Symfony\Bundle\AsseticBundle\Command\DumpCommand->dumpAsset() at /Users/bender22/Proyectos/ETraining/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Command/DumpCommand.php:61 
Symfony\Bundle\AsseticBundle\Command\DumpCommand->execute() at /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:244 
Symfony\Component\Console\Command\Command->run() at /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:904 
Symfony\Component\Console\Application->doRunCommand() at /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:191 
Symfony\Component\Console\Application->doRun() at /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:85 
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:121 
Symfony\Component\Console\Application->run() at /Users/bender22/Proyectos/ETraining/app/console:27 

Моя среда:

OS: Mac OS 10.8.4 
Symfony: 2.3.2 
symfony/assetic-bundle: 2.3.0 
kriswallsmith/assetic: 1.1.2 
Bitnami Mampstack: 5.4.17 
Node.js: 0.10.13 
Php: 5.4.17 
Apache: 2.4.4 

Вот некоторые важные сведения:

Мой config.yml: шаблон

assetic: 
    debug:   %kernel.debug% 
    use_controller: false 
    bundles:  [ExamBundle] 
    java: /usr/bin/java 
    filters: 
     cssrewrite: ~ 
     uglifyjs2: # the path to the uglifyjs executable 
      bin: /usr/local/bin/uglifyjs 
      node: /usr/local/bin/node 
     uglifycss: # the path to the uglifycss executable 
      bin: /usr/local/bin/uglifycss 
      node: /usr/local/bin/node 

Мои Twig:

{% block stylesheets %} 
    {% stylesheets output='css/generated/examlayout.css' filter='cssrewrite, uglifycss' debug=false 
     'bundles/exam/css/exam.css' 
     'bundles/exam/css/exam3.css' 
    %} 
    <link href="{{ asset_url }}" rel="stylesheet" /> 
    {% endstylesheets %} 
{% endblock %} 

Некоторые из вещей, которые я уже испытываемых без везения:

1) Выполнить команду (без указать /Applications/mampstack-5.4.17-0/php/bin/php)

$ app/console assetic:dump --verbose 

в результате

Dumping all dev assets. 
Debug mode is on. 

17:55:12 [file+] /Users/bender22/Proyectos/ETraining/app/../web/css/generated/examlayout.css 
    /Users/bender22/Proyectos/ETraining/app/../web/bundles/exam/css/exam.css 
    /Users/bender22/Proyectos/ETraining/app/../web/bundles/exam/css/exam3.css 

результат файл в сети/CSS правильно (содержание включает в себя оба .css файлы минимизировать г). Проблема заключается в том, что, когда я загрузить веб-страницу, то .css сломана:

<link href="/app_dev.php/css/generated/examlayout.css" rel="stylesheet" /> 

и если я нажимаю на HREF, содержание браузер показывает это:

/* 
[exception] 500 | Internal Server Error | Symfony\Component\Process\Exception\RuntimeException 
[message] The process has been signaled with signal &quot;5&quot;. 
[1] Symfony\Component\Process\Exception\RuntimeException: The process has been signaled with 
signal &quot;5&quot;. 
at n/a 
    in /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Process 
    /Process.php line 428 
at Symfony\Component\Process\Process-&gt;wait(null) 
    in /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Process 
    /Process.php line 204 
at Symfony\Component\Process\Process-&gt;run() 
    in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Filter 
    /UglifyCssFilter.php line 106 
at Assetic\Filter\UglifyCssFilter-&gt;filterDump(object(FileAsset)) 
    in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Filter 
    /FilterCollection.php line 69 
at Assetic\Filter\FilterCollection-&gt;filterDump(object(FileAsset)) 
    in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Asset 
    /BaseAsset.php line 108 
at Assetic\Asset\BaseAsset-&gt;dump(null) 
    in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Asset 
    /AssetCollection.php line 151 
at Assetic\Asset\AssetCollection-&gt;dump(null) 
    in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Asset 
    /AssetCache.php line 69 
at Assetic\Asset\AssetCache-&gt;dump() 
    in /Users/bender22/Proyectos/ETraining/vendor/symfony/assetic-bundle/Symfony/Bundle 
    /AsseticBundle/Controller/AsseticController.php line 88 
at Symfony\Bundle\AsseticBundle\Controller\AsseticController-&gt;render(&#039;6a1dad3&#039;, 
null) 
    in line 
at call_user_func_array(array(object(AsseticController), &#039;render&#039;), 
    array(&#039;6a1dad3&#039;, null)) 
    in /Users/bender22/Proyectos/ETraining/app/bootstrap.php.cache line 2774 
at Symfony\Component\HttpKernel\HttpKernel-&gt;handleRaw(object(Request), &#039;1&#039;) 
    in /Users/bender22/Proyectos/ETraining/app/bootstrap.php.cache line 2748 
at Symfony\Component\HttpKernel\HttpKernel-&gt;handle(object(Request), &#039;1&#039;, true) 
    in /Users/bender22/Proyectos/ETraining/app/bootstrap.php.cache line 2878 
at Symfony\Component\HttpKernel\DependencyInjection 
    \ContainerAwareHttpKernel-&gt;handle(object(Request), &#039;1&#039;, true) 
    in /Users/bender22/Proyectos/ETraining/app/bootstrap.php.cache line 2179 
at Symfony\Component\HttpKernel\Kernel-&gt;handle(object(Request)) 
    in /Users/bender22/Proyectos/ETraining/web/app_dev.php line 28 

*/

2) привилегии Установить папку с (рекурсивным образом):

chmod 777 

для папок: веб (внутри моего проекта Symfony) и моей временной папки, которая оказывается:

/var/folders/hp/vv24wsq56bs9szlt7j8bt3600000gn/T 

Не могли бы вы помочь мне решить эту проблему? У меня кончились идеи.

Примечание: Я помечено это как uglifyjs2, потому что у меня нет достаточного количества точек для создания тега uglifycss

Заранее спасибо :)

+0

Вы решаете эту проблему? – ZloyPotroh

ответ

1

У нас была такая же проблема с uglifycss фильтра истекает памяти с большими файлами css без правильного сообщения об ошибке.

Вы можете показать точное сообщение об ошибке, выполнив следующие действия:

  • отключить uglifycss фильтр в вашей assetic конфигурации
  • выполнения assetic:dump задача
  • перейти к директории, где генерируются файлы CSS, вероятно web/css
  • run uglifycss <filename> > test.css для каждого сгенерированного файла css
  • посмотреть, в каком файле сгенерирована ошибка

Мы решили нашу проблему, перекрывая класс UglifyCssFilter и добавление пользовательского параметра Node.js для предела выше памяти:

<?php 

namespace Acme\DemoBundle\Filter; 

use Assetic\Filter\UglifyCssFilter as BaseUglifyCssFilter; 

class UglifyCssFilter extends BaseUglifyCssFilter 
{ 
    protected function createProcessBuilder(array $arguments = array()) 
    { 
     if ($arguments[0] === '/usr/bin/node') { 
      $arguments = array_merge(array(
       $arguments[0], 
       '--max-old-space-size=4096' 
      ), array_slice($arguments, 1)); 
     } 

     return parent::createProcessBuilder($arguments); 
    } 
} 

Вы должны изменить путь узла в нужном месте (или улучшить сравнение каким-то другим способом).

Вы можете позволить Assetic использовать этот класс, установив параметр службы в конфигурационном файле:

parameters: 
    assetic.filter.uglifycss.class: Acme\DemoBundle\Filter\UglifyCssFilter 
Смежные вопросы