Сборка Symfony 2: дамп UglifyCss вызывает [Symfony\Component\Process\Exception\RuntimeException] Процесс был сигнализирован с сигналом "5"
Я занимаюсь разработкой своего первого приложения Symfony 2 и пытаюсь Uglify минимизировать свои файлы.css. Проблема в том, что когда я выполняю команду:
$ /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 \ Процесс \ Исключение \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
Файл результатов в web/css является правильным (содержимое включает в себя оба файла.css, свернутые). Проблема в том, что когда я загружаю веб-страницу, файл.css не работает:
<link href="/app_dev.php/css/generated/examlayout.css" rel="stylesheet" />
и если я нажму на ссылку, содержимое, которое показывает браузер:
/*
[exception] 500 | Internal Server Error | Symfony\Component\Process\Exception\RuntimeException
[message] The process has been signaled with signal "5".
[1] Symfony\Component\Process\Exception\RuntimeException: The process has been signaled with
signal "5".
at n/a
in /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Process
/Process.php line 428
at Symfony\Component\Process\Process->wait(null)
in /Users/bender22/Proyectos/ETraining/vendor/symfony/symfony/src/Symfony/Component/Process
/Process.php line 204
at Symfony\Component\Process\Process->run()
in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Filter
/UglifyCssFilter.php line 106
at Assetic\Filter\UglifyCssFilter->filterDump(object(FileAsset))
in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Filter
/FilterCollection.php line 69
at Assetic\Filter\FilterCollection->filterDump(object(FileAsset))
in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Asset
/BaseAsset.php line 108
at Assetic\Asset\BaseAsset->dump(null)
in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Asset
/AssetCollection.php line 151
at Assetic\Asset\AssetCollection->dump(null)
in /Users/bender22/Proyectos/ETraining/vendor/kriswallsmith/assetic/src/Assetic/Asset
/AssetCache.php line 69
at Assetic\Asset\AssetCache->dump()
in /Users/bender22/Proyectos/ETraining/vendor/symfony/assetic-bundle/Symfony/Bundle
/AsseticBundle/Controller/AsseticController.php line 88
at Symfony\Bundle\AsseticBundle\Controller\AsseticController->render('6a1dad3',
null)
in line
at call_user_func_array(array(object(AsseticController), 'render'),
array('6a1dad3', null))
in /Users/bender22/Proyectos/ETraining/app/bootstrap.php.cache line 2774
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), '1')
in /Users/bender22/Proyectos/ETraining/app/bootstrap.php.cache line 2748
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), '1', true)
in /Users/bender22/Proyectos/ETraining/app/bootstrap.php.cache line 2878
at Symfony\Component\HttpKernel\DependencyInjection
\ContainerAwareHttpKernel->handle(object(Request), '1', true)
in /Users/bender22/Proyectos/ETraining/app/bootstrap.php.cache line 2179
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
in /Users/bender22/Proyectos/ETraining/web/app_dev.php line 28
* /
2) Установите права доступа к папке с помощью (рекурсивным способом):
chmod 777
для папок: web (внутри моего проекта Symfony) и моей временной папки, которая оказывается:
/var/folders/hp/vv24wsq56bs9szlt7j8bt3600000gn/T
Не могли бы вы помочь мне решить эту проблему? У меня закончились идеи.
Примечание: я отметил это как uglifyjs2, потому что у меня недостаточно очков для создания тега uglifycss
Заранее спасибо:)
1 ответ
У нас была та же проблема с фильтром uglifycss, исчерпавшим память с большими файлами css без надлежащего сообщения об ошибке.
Вы можете показать точное сообщение об ошибке, выполнив следующие действия:
- отключить фильтр uglifycss в вашей сборочной конфигурации
- бежать
assetic:dump
задача - перейдите в каталог, где сгенерированы файлы CSS, возможно, web / css
- бежать
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