Предыстория такова, есть система с осью Ubuntu 18.04 Server
на которой развернут главный сайт компании и сайты для регионов, все это базируется на CMS Bitrix (apache2 + php7.4)
и вот поступает задача от подрядчиков. Странно, вроде наше руководство платит им деньги не только за Web
-разработку, но и самостоятельную настройку, а они не знаю и каждый раз прикидываются что не делают этого.
Может ли Ваш системный администратор (т.е. Я) поправить данное сообщение, которое при проверке системы из Bitrix
было обнаружено и помечено, как "Ошибка":
Для обновления продукта необходимо удалить настройку PHP mbstring.func_overload. Пожалуйста, внесите необходимые изменения или обратитесь в службу технической поддержки вашего хостинга.
С 01.02.2023 будет ограничена поддержка наших продуктов на PHP версии ниже 8.0. Рекомендуемая версия PHP - 8.1 и выше. Вы используете версию PHP 7.4.29. Пожалуйста, запланируйте обновление PHP или обратитесь в службу технической поддержки вашего хостинга.
Мне то что, хоть какое-то разнообразие от текущих задач, да и интересно где это можно поправить.
Шаг №1:
Для начала нужно самим смоделировать, как и где было получено сообщение выше:
URL: https://IP&DNS/bitrix/admin/#authorize (на главном сайте)
— авторизовался — Настройки - Инструменты - Проверка системы
— вкладка «Тестирование конфигурации"
и нажимаю "Начать тестирование"
и вот здесь данная ошибка и значится. Иду дальше.
Шаг №2:
Посмотрел глобальные настройки, то данная настройка не включена:
ekzorchik@ekzorchik:~$ cat /etc/php/7.4/apache2/php.ini | grep overload | grep -v ";" ekzorchik@ekzorchik:~$ cat /etc/php/7.4/cli/php.ini | grep overload | grep -v ";" ekzorchik@ekzorchik:~$ cat /etc/php/7.4/fpm/php.ini | grep overload | grep -v ";"
вывод пуст
Шаг №3:
Создал тестовый файл с функцией на php
и положил в корень дабы отобразить всю информацию по PHP
модулям и настройкам:
ekzorchik@ekzorchik:~$ sudo nano /var/www/html/ekzorchik_2023/info.php <?php phpinfo(); ?>;
теперь при обращении через браузер https://IP&DNS/info.php
в выводе вижу, что есть настройка Local Value & Master Value.
Никогда не обращал внимание на это, а значит нужно почитать.
Master Value - это то, что берется из php.ini
Local value - то, что действует на данный конкретный файл с phpinfo, может устанавливаться через .htaccess либо в настройках хоста
значит в моем случае где в настройках сайта(ов) прописана директива.
Посмотрел настройки в
ekzorchik@ekzorchik:~$ sudo ls /etc/apache2/sites-enabled/ 000-default.conf baikal.conf ekb-le-ssl.conf krasnodar-le-ssl.conf rona-le-ssl.conf shop-le-ssl.conf test-le-ssl.conf tomsk-le-ssl.conf ekzorchik.ru.conf baikal-le-ssl.conf khabarovsk.conf old.ekzorchik.ru.conf rostov.conf spb.conf testshop.conf volgograd-le-ssl.conf ekzorchik.ru-le-ssl.conf chel.conf khabarovsk-le-ssl.conf old.ekzorchik.ru-le-ssl.conf rostov-le-ssl.conf spb-le-ssl.conf testshop-le-ssl.conf atris.conf chel-le-ssl.conf krasnodar.conf perm-le-ssl.conf shop.conf test.conf tomsk.conf ekzorchik@ekzorchik:~$
и действительно была настройка:
В .htaccess-файлах обоих сайтов:
#php_value mbstring.func_overload 2
А вот в conf-файлах сайтов есть отличия:
ekzorchik.ru-le-ssl.conf:
php_admin_value mbstring.func_overload 2
shop-le-ssl.conf:
#php_admin_value mbstring.func_overload 2
Что и требовалось доказать.
ekzorchik@ekzorchik:~$ sudo nano /etc/apache2/sites-available/ekzorchik.ru-le-ssl.conf закомментировал #php_admin_value mbstring.func_overload 2 ekzorchik@ekzorchik:~$ sudo nano /etc/apache2/sites-available/shop-le-ssl.conf было закомментировано #php_admin_value mbstring.func_overload 2 ekzorchik@ekzorchik:~$ sudo systemctl reload apache2
Шаг №4:
Как шпаргалка самому себе вкладываю в текущую заметку, как пример содержимое сайтов на доступ к 80
порту и редирект на 443
порт:
ekzorchik@ekzorchik:~$ cat /etc/apache2/sites-enabled/ekzorchik.ru.conf <VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerName ekzorchik.ru ServerAdmin webmaster@localhost DocumentRoot /var/www/html/ekzorchik <Directory /var/www/html/ekzorchik> AllowOverride All </Directory> # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/ekzorchik-error.log CustomLog ${APACHE_LOG_DIR}/ekzorchik-access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf RewriteEngine on RewriteCond %{SERVER_NAME} =ekzorchik.ru RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> ekzorchik@ekzorchik:~$ cat /etc/apache2/sites-enabled/ekzorchik.ru ekzorchik.ru.conf ekzorchik.ru-le-ssl.conf ekzorchik@ekzorchik:~$ cat /etc/apache2/sites-enabled/ekzorchik.ru-le-ssl.conf <IfModule mod_ssl.c> <VirtualHost *:443> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerName ekzorchik.ru ServerAdmin webmaster@localhost DocumentRoot /var/www/html/ekzorchik_2023 <Directory /var/www/html/ekzorchik_2023> AllowOverride All </Directory> # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/ekzorchik-error.log CustomLog ${APACHE_LOG_DIR}/ekzorchik-access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf php_value default_charset utf-8 #php_admin_value mbstring.func_overload 2 RewriteEngine on # Some rewrite rules in this file were disabled on your HTTPS site, # because they have the potential to create redirection loops. # RewriteCond %{SERVER_NAME} =ekzorchik.ekzorchik.ru # RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/ekzorchik.ru/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/ekzorchik.ru/privkey.pem </VirtualHost> </IfModule> ekzorchik@ekzorchik:~$
Шаг №5:
После этого снова через Web
—панель администрирования Bitrix
запускаю проверку системы и ошибок нет:
URL: https://IP&DNS/bitrix/admin/#authorize (на главном сайте)
— авторизовался — Настройки - Инструменты - Проверка системы
— вкладка "Тестирование конфигурации"
и нажимаю "Начать тестирование"
На заметку: По окончании расследования файл info.php
следует удалить, следует ограничивать выдаваемую информацию всем и каждому направо налево.
Шаг №6:
Меня спросили зачем я делал данную настройку, я ответил покуда подрядчики имеют полный доступ к серверу с меня что-то спрашивать уж извольте, т.к я эти настройки не вносил. Изначально требование к виртуальному серверу значилось, я разворачиваю операционную систему, настраиваю доступы, ставлю обновления, настраиваю защиту и передаю подрядчикам. Прошло время, и подрядчики съехали с темы поддержания инфраструктуры сервера или не сошлись в цене поддержки, а теперь спрашивать с меня — это уж слишком. Я это озвучил, озвучиваю и в целом, хотят спрашивать, подрядчики делают только в рамках каталог где CMS
система Bitrix: /var/www/html
и не более.
Подведем итог, даже из данной задаче я узнал больше чем ранее, т.к. особо не интересовался разбором что отображает информация, отображает значит работает, а для каждого сайта я прописываю те или иные настройки и все что делается с сервером или сайтом у меня задокумментировано, а не как тут.
На этом заметка для самого себя успешно сформирована, с уважением автор блога Олло Александр aka ekzorchik.