2011-07-01 16 views
10

YUI sıkıştırıcısını komut satırında (Windows'ta) test ettim ve gayet iyi çalışıyor gibi görünüyor.Assmy + YUI Symfony 2'deki Kompresör: Bu bir hatadır?

Ama assetic yarattığı .css sıkıştırılmış, ve üstüne bu mesaj ile birlikte geliyor değil (.css iç!):

/* 
[exception] 500 | Internal Server Error | RuntimeException 
[message] 
[1] RuntimeException: 
      at n/a 
       in E:\websites\symfony2\public_html\Symfony\vendor\assetic\src\Assetic\Filter\Yui\BaseCompressorFilter.php line 81 

      at Assetic\Filter\Yui\BaseCompressorFilter->compress(' 

bu bir yapılandırma sorunu var mı? Ya da asetik bir böcek mi?

{% stylesheets '@CompanyBundlenameBundle/Resources/public/css/style.css' filter='yui_css' %} 
<link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}" /> 
{% endstylesheets %} 
+0

Bende aynı sorun var ama Mac OS X Lion. –

+0

YUI bu hatayı atıyor gibi görünüyor. Kompresörü Assetic'in dışındaki style.css üzerinden çalıştırabiliyor musunuz? –

cevap

4

YUI kompresör senin böyle app/config/config.yml tanımlamak gerekir:

İşte benim dal şablonu içinde kullanılan kod Tabii

assetic: 
    debug:   %kernel.debug% 
    use_controller: false 
    filters: 
     cssrewrite: ~ 
     yui_css: 
      jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.6.jar 

, sen YUI kompresörü indirmeniz gerekir ve /app/Resources/java/ dizininize kopyalayın.

Uyarı, assetic paket otomatik, aşağıdaki komutları kullanarak bunları yayınlamak gerekir sizin kompres CSS yayınlamaz:

php app/console assetic:dump 
+0

On Dev, bunları otomatik olarak yayınlar. Her neyse, döküm komutunu denedim ve aynı hata çıktı: RuntimeException. Bu sinir bozucu, sadece linux üzerindeki kodu test ediyor gibi görünüyor. – HappyDeveloper

+0

Linux üzerinde çalışıyorum ve hatayı sistemimde yeniden oluşturamıyorum. [Symfony github] (http://github.com/symfony/symfony) sorununu test edin, takım çok reaktiftir. – egeloen

3

Sadece bu aynı sorun var.

  • Aç "deps" dosyasını i çözmek için yaptığı şey

    .

  • "[AsseticBundle]" bölümündeki "version = v1.0.0RC1" satırını kaldırın.
  • AsseticBundle'ın en son sürümünü edinmek için "bin/vendors update" komutunu çalıştırın.

Bu yardımcı olur umarım.

3

Bu sorunu çözüp çözmediğinizden emin değilim, ancak bugün aynı sorunu yaşadım.

Yukarıdaki önerileri takip ettim, ancak yine de sevinç yok.

Yani 500 iç hata içine baktım ve başlamıştı hata oldu:

[message] Warning: file_put_contents(): Filename cannot be empty in /Applications/MAMP/htdocs/shop/vendor/assetic/src/Assetic/Filter/Yui/BaseCompressorFilter.php line 84 

Ben çizgi 84 de dosya içine baktı ve bu satır vardı:

$input = tempnam(sys_get_temp_dir(), 'assetic_yui_compressor'); 

bazı kazma sonra etrafında ve hata ayıklama sys_get_temp_dir() tarafından kullanılan geçici dizinimdeki izinlerin yanlış olduğunu buldum.

Bu izinleri çözdüğümde iyi çalıştı.

Bu, aldığınız aynı hata olup olmadığından emin değilim, ancak eğer öyleyse bu iyi yardımcı olur.

Alkış

Adam

5

Ben aynı sorun var ..., buldum tek yolu (sorun yalnızca pencerelerde mevcut görünüyor) gerçekten kirli:

1 -

yui_css: 
    jar: "%kernel.root_dir%\\Resources\\java\\yuicompressor.jar" 
    java: "C:\\Program Files\\Java\\jre6\\bin\\java.exe" 
(yui kavanoz beyanı yolunun aynı yerde) yapılandırma dosyasında java yürütülebilir yolunu belirtin

2 - "run" yöntemi Orijinal çizgi içinde "proc_open" satırını (hat 123 my versiyonu) değiştirin Assetic \ Util \ process.php dosyasını açın:

$process = proc_open($this->commandline, $descriptors, $pipes, $this->cwd, $this->env, $this->options); 

Modifiye hattı:

$process = proc_open('"'.$this->commandline.'"', $descriptors, $pipes, $this->cwd, $this->env, $this->options); 

Ve çalışır ... ama gerçek bir çözüm değil ...

birisi fazla bilgiye sahipse ... teşekkürler :) en son kararlı sürümünü kullanıyorsanız

5

(1.0.2), daha sonra Windows'daki YUI kompresörünü doğru bir şekilde kullanmasını engelleyen bir hata var. @Pierre'nin işaret ettiği gibi sorun, proc_open işlevinin çağrıldığı yoldur, ancak düzeltme başka bir yerde uygulanmalıdır.

Eğer Assetic \ Util \ ProcessBuilder sınıfının bir göz varsa hattı 95 suçlu bulacaksınız:

#95 if (defined('PHP_WINDOWS_MAJOR_VERSION')) { 

eğer açıklama yapar PHP_WINDOWS_MAJOR_VERSION olarak PHP'de böyle sabiti (http://php.net/manual/en/info.constants.php) var, test yanlış olarak değerlendirir. Bunun yerine kullanılmalıdır, PHP_WINDOWS_VERSION_MAJOR.

#102 if ($args) { 
#103 $script .= ' '.implode(' ', array_map('escapeshellarg', $parts)); 
#104 } 

$parts

bu kapsamda tanımlı değil ve $args ile değiştirilmelidir:

Ben bu sınıfta bulunan ikinci konu

Aşağıdaki satırlardan bir çift.

Daha sonra öğrendiğim gibi, her iki konu da 16.09 tarihinde bu taahhütte düzeltildi: https://github.com/kriswallsmith/assetic/commit/cc2e9adb744df0704a5357adc1cf9287c427420f Ancak kod henüz etiketlenmedi.

Bu yardımcı olur umarım.

+0

Çözüm için teşekkürler. Bu benim problemimi çözüyor – Permana

2

Jan Molak'ın yukarıdaki mesajı sayesinde, Windows Vista'da Symfony 2'de Assetic Less Filter'i başarılı bir şekilde çalıştırabildim. Benim deps dosyasında

Ben

[assetic] 
    git=http://github.com/kriswallsmith/assetic.git 
    version=cc2e9adb744df0704a5357adc1cf9287c427420f 

içine

[assetic] 
    git=http://github.com/kriswallsmith/assetic.git 
    version=v1.0.3 

değişti ve o zaman bu güncelleştirme diğer sorunlara neden olmaz umut

php bin\vendors update 

çalıştırdınız. Şimdilik her şey beklendiği gibi çalışıyor gibi görünüyor.Değiştir

:

filter='yui_css' 

tarafından: Debug

filter='?yui_css' 

http://symfony.com/doc/current/cookbook/assetic/yuicompressor.html (Devre Dışı küçültme ile dev üzerine yui_css devre dışı bırakırken

0

Bu hatayla ilgili somme saat geçirdikten sonra ben onu çözdüm Mod)