Hap*_*per 10 php yui-compressor symfony
我已经在命令行(在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('
Run Code Online (Sandbox Code Playgroud)
这是配置问题吗?或者资产中的错误?
这是我在twig模板中使用的代码:
{% stylesheets '@CompanyBundlenameBundle/Resources/public/css/style.css' filter='yui_css' %}
<link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}" />
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)
小智 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"
Run Code Online (Sandbox Code Playgroud)
2 - 打开Assetic\Util\Process.php文件在"run"方法中更改"proc_open"行(第123行我的版本)原始行:
$process = proc_open($this->commandline, $descriptors, $pipes, $this->cwd, $this->env, $this->options);
Run Code Online (Sandbox Code Playgroud)
修改后的行:
$process = proc_open('"'.$this->commandline.'"', $descriptors, $pipes, $this->cwd, $this->env, $this->options);
Run Code Online (Sandbox Code Playgroud)
它的工作原理......但不是真正的解决方案......
如果有人有更多的信息......谢谢:)
如果您使用的是最新的稳定版本(1.0.2),那么它有一个错误,阻止它在Windows上正确使用YUI压缩器.正如@Pierre指出的那样,问题在于调用proc_open函数的方式,但修复应该应用于其他地方.
如果您查看Assetic\Util\ProcessBuilder类,您将在第95行找到罪魁祸首:
#95 if (defined('PHP_WINDOWS_MAJOR_VERSION')) {
Run Code Online (Sandbox Code Playgroud)
在PHP中没有这样的常量PHP_WINDOWS_MAJOR_VERSION(http://php.net/manual/en/info.constants.php),这使得if语句测试评估为false.应该使用的是什么PHP_WINDOWS_VERSION_MAJOR.
我在本课程中发现的第二个问题如下:
#102 if ($args) {
#103 $script .= ' '.implode(' ', array_map('escapeshellarg', $parts));
#104 }
Run Code Online (Sandbox Code Playgroud)
$parts未在此范围内定义,应替换为$args.
正如我后来发现的那样,这两个问题都在16.09修正了这个提交:https://github.com/kriswallsmith/assetic/commit/cc2e9adb744df0704a5357adc1cf9287c427420f 但是代码还没有被标记.
希望这可以帮助.
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
Run Code Online (Sandbox Code Playgroud)
当然,你需要下载YUI压缩器并将其复制到你的/app/Resources/java/目录中。
警告,assetic 包不会自动发布您的压缩 CSS,您需要使用以下命令手动发布它们:
php app/console assetic:dump
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6084 次 |
| 最近记录: |