Нажмите Enter, чтобы увидеть результаты или ESC для отмены.

О том почему не работает, как сделать и настроить

 

Удаление из UTF8 BOM php-скриптом

Столкнулся с интересной ошибкой, страница панели управления сайта на CMS MODX стала время от времени отображаться некорректно, вместо страницы на все окно браузера растягивалось меню панели управления MODX.

Долго не мог найти причину ошибки, в консоли браузера не показывалось никаких ошибок, а верстка рушилась, после обновления страница могла корректно отобразиться, то есть ошибка повторялась не постоянно.

Потратив несколько часов на проверку и случайно заметил, что в панели разработчика (f12) в коде страницы в самом её начале выделяется пустой символ, при выборе «Edit as HTML» пустой символ превращался в



Оказалось, причина в кодировке файлов, часть файлов по какой-то причине были в UTF8 c BOM, в основном это были файлы дополнения poll, оно реализует функции голосования для MODX.

Для массовой чистки от BOM воспользовался php скриптом:

<?
$HOME = dirname(__FILE__); // Указываем папку с которой начать рекурсивный поиск
$WIN = 0; //Если север на windows, то указать 1

// Рекурсивный поиск
function RecursiveFolder($sHOME)
{
    global $BOMBED, $WIN;
    $win32 = ($WIN == 1) ? "\\" : "/";
    $folder = dir($sHOME);
    $foundfolders = array();
    while ($file = $folder->read()) {
        if ($file != "." and $file != "..") {
            if (filetype($sHOME . $win32 . $file) == "dir") {
                $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;
            } else {
                $content = file_get_contents($sHOME . $win32 . $file);
                $BOM = SearchBOM($content);
                if ($BOM) {
                    $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
                    // Удаляет 3 символа из начала файла
                    $content = substr($content, 3);
                    // Результат записывает в исходный файл
                    file_put_contents($sHOME . $win32 . $file, $content);
                }
            }
        }
    }
    $folder->close();
    if (count($foundfolders) > 0) {
        foreach ($foundfolders as $folder) {
            RecursiveFolder($folder, $win32);
        }
    }
}

// Поиск BOM в файле
function SearchBOM($string)
{
    if (substr($string, 0, 3) == pack("CCC", 0xef, 0xbb, 0xbf)) return true;
    return false;
}

?>
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <title>Поиск и удаление UTF8 BOM</title>
</head>
<body>
<div class="FOUND">
    <?
    $BOMBED = array();
    RecursiveFolder($HOME);
    $list = '';
    foreach ($BOMBED as $utf) {
        $list .= $utf . "<br />\n";
    }
    if (!empty($list)) {
        ?>
        <h2>BOM был найден в:</h2>
        <?= $list; ?>
    <? } else { ?>
        <h2>BOM не найден</h2>
    <? } ?>
</div>
</body>
</html>
Читать дальше
 

Автоматическое изменение размера изображения

Как массово изменить размер изображения? Очень просто, просто запустите бесплатную программу Dropresize, укажите папку для обработки и закиньте в эту папку изображения. В статье пример её настройки и ссылки на скачивание.
Читать дальше
 

Распаковать многотомный tar.gz архив bitrix на windows

При создании резервной копии bitrix разбивает архив на части (тома), размер каждого тома, в несжатом состоянии, по умолчанию значение этого параметра 100 МБ. В статье описано как и чем можно распаковать tar.gz архив на windows.
Читать дальше
MODx облако тегов
 

MODx облако тегов

Ранее был рассмотрен вопрос тегирования сайта, вывода тегов в статьях и создание отдельных страниц для каждого тега, сегодня рассмотрим пример создания облака тегов с указанием количества использования каждого тега.
Читать дальше
Реферальный спам и защита от него на nginx
 

Реферальный спам и защита от него на nginx

Начиная с конца 2014 года в статистике на многих сайтах стали появляться переходы с реферальными ссылками и 100% отказами. С помощью простой настройки nginx можно избавится от подобного спама в статистике.
Читать дальше
Тегирование сайта на MODx
 

Тегирование сайта на MODx

В статье пойдет речь о том, как на сайте организовать перелинковку с помощью меток (тегов) к статьям. Особенность описанного способа в том, что страница тега полностью может быть настроена под SEO, можно указать title, h1, описание, поэтому страницы тегов можно использовать как категории материалов.
Читать дальше
Nginx Apache SSL настройка
 

Nginx Apache SSL настройка

SSL сертификат — это круто, модно, а еще безопасно и его рекомендует использовать google.Сегодня я опишу как установить SSL сертификат на свой сервер c apache + nginx.
Читать дальше