Метка: HTTP

Отключаем логгирование локальных IP в Apache

Даже при правильно настроенном веб-сервере нужно время от времени читать логи. В идеале с использованием парсера — с группировкой запросов по категориям, статистикой, фильтрацией по адресам и прочими аналитическими функциями. Впрочем, фильтрацию по адресам в логах Apache можно настроить и «нативно» — например, убрать из выдачи все запросы, отправленные из локальной сети, что существенно упростит чтение лога. Для этого потребуется создать «свой» формат лога. На примере виртуального хоста (файл httpd-vhosts.conf) это будет выглядеть так:

<VirtualHost *:443>
. . .
LogFormat "%h %l %u %t \"%r\" %>s %b" common
SetEnvIf Remote_Addr "192\.168\." no_log
CustomLog "Z:/domain.com_access_no_local.log" common env=!no_log
. . .
</VirtualHost>

После сохранения изменений нужно перезапустить веб-сервер.


Imagick для PHP 8.2.3 под Windows

В декабре прошлого, 2022-го года, вышла очередная версия PHP за номером 8.2. Спустя некоторое время народ начал потихоньку обновляться, правда, оказалось, что после обновления перестал загружаться модуль Imagick, а в логах поселилась ошибка:

PHP Warning: PHP Startup: imagick: Unable to initialize module
Module compiled with module API=20210902
PHP compiled with module API=20220829
These options need to match
in Unknown on line 0

Эта же ошибка встречалась и при использовании популярных пакетов типа WAMP, XAMP и т.д., причем исправлять её никто не спешил. Проблема очевидна — нужно собирать Imagick для актуальной версии PHP. Ниже я привожу ссылки на билд Imagick 7.1.0-62 для PHP 8.2.3, Thread Safe и Non Thread Safe. Традиционно — для платформы MS Windows:
Imagick 7.1.0-62 для PHP 8.2.3 (Win64, NTS)
Imagick 7.1.0-62 для PHP 8.2.3 (Win64, TS)
Собрано в VC16, нужны соответствующие распространяемые наборы библиотек.