Прододжение темы про некорректную работу алгоритма косолидации
| Macik | 
					 | 
			
|---|---|
| 
					 Установил последнее исправление №914 Не помогло. Включил отладку и залез в код. Вот, что выясняется: 
if (preg_match_all('#\burl\((\'|")?([^\)"\']+)\1?\)#i', $file_code, $mt, PREG_SET_ORDER))
{
        foreach ($mt as $m)
	{
		$filename = empty($relative_path) ? $m[2] : $relative_path . '/' . $m[2];
		$filename = str_replace($current_path, '', realpath($filename));
		if (!$filename)
		{
			continue;
		}
		if ($filename[0] === '/')
		{
			$filename = mb_substr($filename, 1);
		}
		$file_code = str_replace($m[0], 'url("' . $filename . '")', $file_code);
	}
}
	- проблема не в регулярном выражении, оно отрабатывает нормально (по крайней мере с последними правками). Теперь подробнее... В итоге на одном (для примера) из шагов цикла имеем (строки 4005-4007) следующие входные данные: 
	 
	Стал копать дальше пришел к выводу, что проблема в функции  
	В моем примере (в строке 4006) получается  Поэкпериментировал: 
	 
	 и только когда все слэши идут в одном формате и без открывающего слеша работает правильно: 
	 
 
	Так что, как решение проблемы надо проверять (и отрезать) ведущий слэш в  Добавлено 3 минуты спустя: 
	Да, и в  https://github.com/macik 
					правильный хостинг — https://goo.gl/fjCa1F Dieser Beitrag wurde von Macik (am 17. Mai 2012, 12:35, vor 13 Jahre) bearbeitet  | 
			
| Trustmaster | 
					 | 
			
|---|---|
| 
					 Спасибо за исследование! Я бы продолжал безрезультатно пожимать плечами, т.к. Windows для разработки и тестирования не использую и не догадался бы, что дело в слешах. В самое ближайшее время исправлю слеши на прямые и уберу слеш в начале. May the Source be with you! 
					 | 
			
| Macik | 
					 | 
			
|---|---|
| 
					 Проверил свежую версию. Еще не все чисто (точнее говоря все еще не работает под windows ): при первом запуске (с включенной консолидацией) на теме HTMLkickstart вылезло вот такое: илл. С этим пока не разбирался. А вот с url ресурсами такая картина: илл. - туда попадает полный (файловый) путь, плюс ко всему он там «изувечен». залез в код: 
	Видимо дело вот в этой строке: здесь str_replace не отрабатывает т.к. в $current_path у нас пусть с «правильными» (замененными ранее) слэшами, а realpath нам возвращает windows-style «xxx\xxx\». Таким образом в $filename оказывается полный файловый путь с обратными слэшами. 
 Добавлено 10 минут спустя: Поковырял ошибку с «@import» надо править регулярное выражение в 4004 строке: 
	 оно жадное и захватывает сразу 2 строки из файла themes/kickstart/style.css и получается: $m[0] = '@import url(http://fonts.googleapis.com/css?family=Arimo:400,700);@import url(css/modalbox.css);' что и вызывает ошибку с первого скриншота. https://github.com/macik 
					правильный хостинг — https://goo.gl/fjCa1F Dieser Beitrag wurde von Macik (am 1. Juni 2012, 21:32, vor 13 Jahre) bearbeitet  |