2013-07-24 46 views
4

我正在開發我的第一個Symfony 2應用程序,並且我正在嘗試Uglify以最小化我的.css文件。的問題是,當我執行命令:Symfony 2資產:轉儲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的\元器件\過程\異常\的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 

我的嫩枝模板:

{% 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文件最小化d)。問題是,當我加載網頁,名爲.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 

的文件夾: 網站和我的temp文件夾,其結果是(我的Symfony的項目裏):

/var/folders/hp/vv24wsq56bs9szlt7j8bt3600000gn/T 

能否請你幫我解決此問題?我已經用完了想法。

注:我已經標記這是uglifyjs2,因爲我沒有足夠的點提前:)

+0

你解決這個問題? – ZloyPotroh

回答

1

創建uglifycss

感謝標籤,我們有同樣的問題與uglifycss過濾不多了內存與大css文件沒有適當的錯誤信息。

你可以按照下面的步驟顯示確切的錯誤信息:

  • 禁用uglifycss過濾器在您的assetic配置
  • 運行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 
相關問題