понедельник, 12 декабря 2022 г.

Apache перенаправление запросов RedirectMatch

Для того что бы заставить сервер Apache выполнять переадресацию запросов к ряду URL на другой сервер
нужно воспользоваться директивой RedirectMatch.

Данная директива имеет два параметра:
 - маску, с которой будет сравниваться поступившйи URL
 - путь назначения

Например, вот тут все запросу к URL к каталогу "_sakura" к файлам php, html, js
будут переадресовываться на ресурс http://10.10.9.252/
RedirectMatch "_sakura/(.*)\.html$" "http://10.10.9.252/"
RedirectMatch "_sakura/(.*)\.php$" "http://10.10.9.252/"
RedirectMatch "_sakura/(.*)\.js$" "http://10.10.9.252/"


Директивы следует вписывать в конфигурационный файл apache, в блок описывающий поведении директории.
Например сюда:
файл /etc/httpd/conf/httpd.conf
Раздел:
<Directory "/var/www/html">
....
RedirectMatch "_sakura/(.*)\.html$" "http://10.10.9.252/"
RedirectMatch "_sakura/(.*)\.php$" "http://10.10.9.252/"
RedirectMatch "_sakura/(.*)\.js$" "http://10.10.9.252/"
</Directory>




понедельник, 21 ноября 2022 г.

Ошибка вставки данных в MariaDB Server 10.9.3 mysqli_sql_exception Data too long for column

В MariaDB Server версий больше 10.1.6 включены по умолчанию режимы, требующие четкого соблюдения типов вставляемых данных.
https://mariadb.com/kb/en/sql-mode/
Например, если вставляемые текстовые данные по объему больше, чем определено в типе поля, то будет возникать ошибка:
Fatal error: Uncaught mysqli_sql_exception: Data too long for column

Посмотреть, какие режимы установлены в текущей инсталляции можно так:
MariaDB [(none)]> SELECT @@SESSION.sql_mode
    -> ;
+-------------------------------------------------------------------------------------------+
| @@SESSION.sql_mode                                                                        |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+


Режим STRICT_TRANS_TABLES - как раз отвечает за контроль того, что длинна строки вставляемых данных должна быть меньше определенной
в структуре таблицы значения. Можно отключить этот режим и тогда вставка данных будет происходить как в старых версиях - входная строка будет обрезаться до максимально возможного, определенного в структуре таблице.

Установку редима можно производить каждый раз при подключении к таблице, точно так же как мы устанавливаем режим кодировки:

$query="SET NAMES utf8";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$query="SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

воскресенье, 6 ноября 2022 г.

Установка и использование graphviz в RockyLinux 9

Установка graphviz
# yum install 'graphviz*'

Установка репозитария PHP
# cd /usr/src
# wget http://pear.php.net/go-pear.phar
# php go-pear.phar


Установка пакета php GraphViz
(https://pear.php.net/package/Image_GraphViz)
# /usr/bin/pear_old install Image_GraphViz

Теперь в коде PHP можно использовать:

require_once 'Image/GraphViz.php';
$gv = new Image_GraphViz();

И использовать свойства $gv для построения графиков