10

コマンド ライン (Windows) で YUI コンプレッサーをテストしましたが、問題なく動作するようです。

しかし、assetic によって作成された .css は圧縮されておらず、上部 (.css 内!) に次のメッセージが表示されます。

/*
[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('

これは構成上の問題ですか? または資産のバグ?

小枝テンプレート内で使用したコードは次のとおりです。

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

7 に答える 7

5

私は同じ問題を抱えています...(問題はWindowsにのみ存在するようです)私が見つけた唯一の方法は、本当に汚いです:

1 - 構成ファイルに java 実行可能パスを指定します (yui jar 宣言パスと同じ場所)。

yui_css:
    jar: "%kernel.root_dir%\\Resources\\java\\yuicompressor.jar"
    java: "C:\\Program Files\\Java\\jre6\\bin\\java.exe"

2 - Assetic\Util\Process.php ファイルを開きます 「run」メソッドの「proc_open」行 (私のバージョンでは 123 行目) を変更します 元の行:

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

変更された行:

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

そしてそれは機能します...しかし、本当の解決策ではありません...

誰かがより多くの情報を持っている場合...ありがとう:)

于 2011-10-28T16:39:44.413 に答える
5

最新の安定バージョン (1.0.2) を使用している場合、Windows で YUI コンプレッサーを正しく使用できないというバグがあります。@Pierre が指摘したように、問題は proc_open 関数が呼び出される方法にありますが、修正は他の場所に適用する必要があります。

Assetic\Util\ProcessBuilder クラスを見ると、95 行目に犯人が見つかります。

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

PHP にはPHP_WINDOWS_MAJOR_VERSION( http://php.net/manual/en/info.constants.php ) のような定数がなく、if ステートメントのテストが false と評価されます。代わりに使用する必要があるのは ですPHP_WINDOWS_VERSION_MAJOR

このクラスで見つけた 2 番目の問題は、以下の数行です。

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

$partsはこのスコープで定義されていないため、 に置き換える必要があり$argsます。

後でわかったように、16.09 のコミット ( https://github.com/kriswallsmith/assetic/commit/cc2e9adb744df0704a5357adc1cf9287c427420f ) で両方の問題が修正されています が、コードにはまだタグが付けられていません。

お役に立てれば。

于 2011-11-05T16:54:51.470 に答える
4

YUIコンプレッサーはあなたのように定義する必要がありますapp/config/config.yml

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

もちろん、YUIコンプレッサーをダウンロードして/app/Resources/java/ディレクトリにコピーする必要があります。

警告、アセットバンドルは圧縮CSSを自動的に公開しません。次のコマンドを使用して、手動で公開する必要があります。

php app/console assetic:dump 
于 2011-07-02T15:59:07.270 に答える
3

これと同じ問題が発生しました。

私が解決したこと:

  • 「deps」ファイルを開きます。
  • 「[AsseticBundle]」セクションの「version=v1.0.0RC1」行を削除します。
  • 「bin/vendors update」コマンドを実行して、AsseticBundle の最新バージョンを取得します。

お役に立てれば。

于 2011-07-15T03:39:24.570 に答える
3

これを解決したかどうかはわかりませんが、今日も同じ問題がありました。

上記の提案に従いましたが、まだ喜びはありません。

そこで、500 内部エラーを調べたところ、次のようなエラーが表示されました。

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

ファイルの 84 行目を調べたところ、次の行がありました。

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

掘り下げてデバッグした後、sys_get_temp_dir() で使用される一時ディレクトリのアクセス許可が間違っていることがわかりました。

これらのアクセス許可を解決すると、正常に機能しました。

これがあなたが受け取ったのと同じエラーであったかどうかはわかりませんが、もしそうなら、これがうまくいくことを願っています.

乾杯

アダム

于 2011-08-04T11:48:16.353 に答える
2

上記の Jan Molak の投稿のおかげで、Windows Vista の Symfony 2 で Assetic Less Filter を正常に実行できました。

私のdepsファイルで私は変更しました

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

の中へ

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

そして実行します

php bin\vendors update

この更新によって他の問題が発生しないことを願っています。今のところ、すべてが期待どおりに機能しているようです。

于 2012-05-13T16:32:45.390 に答える
0

このバグに何時間も費やした後、次のコマンドで開発者の yui_css を無効にして解決しました。

交換 :

filter='yui_css'

に :

filter='?yui_css'

http://symfony.com/doc/current/cookbook/assetic/yuicompressor.html (デバッグモードで縮小化を無効にする)

于 2014-05-02T16:40:28.277 に答える