Minify_YUICompressor : YUI compressor execution failed.

D
На сайте с 28.06.2008
Offline
1101
329

Есть у меня на сайта последняя Джумла - плагин, пакующий в gz скрипты и css. Пару дне назад я перенес все сайты на новый ВПС.

Версия пхп фм, дебиана, nginx те же что и раньше. И вот только сегодня заметил что этот плагин перестал работать.

Если очистить папку с кешем то раньше тут же начинали создаваться новые файлы, а сейчас архивы не создаются и на сайте белая страница с надписью

Minify_YUICompressor : YUI compressor execution failed.

Такое раньше я встречал только один раз когда права на папку с кешем для файлов плагина были не дающие ему писать.

Сейчас проверил - права на папку праивльные юзер www-data. Я даже 777 поставил - пофиг.

Пошел включил лог ошибок в пхп - обновил страницу, ничего (появились ошибки, но ничего близко к этому плагину нет).

Прописал вывод ошибок прям в сам плагин - ноль реакции.

Помогите советом?

код плагина:

<?php

// no direct access
defined('_JEXEC') or die('Restricted access');

jimport('joomla.plugin.plugin');

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

class plgSystemPacker extends JPlugin
{
var $debug = false;

function onBeforeCompileHead()
{
//return;
$app = JFactory::getApplication();
if($app->isSite())
{
$document = JFactory::getDocument();
$headData = $document->getHeadData();

// CSS
$hash = md5(serialize($headData['styleSheets']));
$filename = JPATH_ROOT.'/templates/packer/cache/'.$hash.'.css';
if(!file_exists($filename))
{
jimport('extra.CssUriRewriter');
jimport('extra.YUICompressor');
Minify_YUICompressor::$jarFile = JPATH_ROOT.'/plugins/system/packer/yuicompressor-2.4.8.jar';
Minify_YUICompressor::$tempDir = JPATH_ROOT.'/tmp';

$content = '';
foreach($headData['styleSheets'] as $index => $value)
{
$content .= $this->getCss($index);
}
$output = Minify_YUICompressor::minifyCss(
$content,
array(
'charset' => 'utf-8',
'line-break' => 1000,
'type' => 'css'
)
);
$this->save($filename, $output);
}
if(!empty($headData['styleSheets']))
{
$headData['styleSheets'] = array('/templates/packer/cache/'.$hash.'.css' => array(
//'rel' => 'stylesheet'
));
}

// JS
$www = array();
$data = array();

// Определяем
foreach($headData['scripts'] as $index => $value)
{
//echo "<!-- ".$index." -->\n";
if(preg_match('/http/', $index))
{
$www[$index] = $value;
}else{
$data[$index] = $value;
}
}
// Пакуем
$hash = md5(serialize($data));
$filename = JPATH_ROOT.'/templates/packer/cache/'.$hash.'.js';
if(!file_exists($filename))
{
jimport('extra.YUICompressor');
Minify_YUICompressor::$jarFile = JPATH_ROOT.'/plugins/system/packer/yuicompressor-2.4.8.jar';
Minify_YUICompressor::$tempDir = JPATH_ROOT.'/tmp';

$content = '';
foreach($data as $index => $value)
{
$content .= $this->getJs($index);
}
$output = Minify_YUICompressor::minifyJs(
$content,
array(
'charset' => 'utf-8',
'line-break' => 1000,
'type' => 'js',
'nomunge' => true,
'preserve-semi' => false,
'disable-optimizations' => false
)
);
$this->save($filename, $output);
}
// Подключаем
$headData['scripts'] = array_merge($www, array('/templates/packer/cache/'.$hash.'.js' => array(
'mime' => 'text/javascript',
'defer' => '',
'async' => false
)));

$document->setHeadData($headData);
}
}

function getCss($url)
{
$data = parse_url($url);
$content = file_get_contents(JPATH_ROOT.''.$data['path']);
$path = dirname($data['path']).'/';
return Minify_CSS_UriRewriter::prepend($content, $path);
}

function getJs($url)
{
$data = parse_url($url);
$content = file_get_contents(JPATH_ROOT.''.$data['path']);
return str_replace('/*!', '/*', $content);
}

function save($filename, $content)
{
file_put_contents($filename, $content);

$fp = gzopen($filename.'.gz', 'w9');
gzwrite($fp, $content);
gzclose($fp);
}
}



---------- Добавлено 21.03.2018 в 13:28 ----------

вопрос снят - помогло

sudo apt-get install yui-compressor

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий