Содержание
8.5. Файл server_check.php
Введение
Файл server_check.php - исполнительный файл, который будет проверять наш веб-сервер, а именно:
- Версия PHP,
- Версия Apache http server,
- Наличие установленной версии системы управления базами данных MySQL,
- Модули и библиотеки PHP
- Права на чтение/запись в папки и файлы
- Отсутствие файла конфигурации
Так-же этот файл будет иметь функцию вывода информации (отображение данных файла module_help.php) о необходимых модулях и логику поведения приложения при разных действиях пользователя.
Подготовка
Создадим в директории /test вложенную директорию img для хранения и вывода иконок. В
ней мы сохраним файлы иконок OK, ERROR и Refresh нашего установщика:
,
,
.
Основная часть файла это перечисление, оформленное в таблице - структурированного набора данных, состоящего из строк и столбцов, внутри которой помещен заголовок и код запросов PHP.
<table> <tr> <td> Наименование модуля </td> <td> <?php echo "" . PHP_OS ; ?> </td> </tr> </table>
- <table> - основной тег HTML, определяющий начало таблицы.
- <tr> - основной тег HTML, определяющий начало строки таблицы.
- <td> - основной тег HTML, определяющий начало ячейки таблицы.
- <?php - открывающий тег PHP.
- ?> - закрывающий тег PHP.
- </td> - основной тег HTML, определяющий конец ячейки таблицы.
- </tr> - основной тег HTML, определяющий конец строки таблицы.
- </table> - основной закрывающий тег HTML, определяющий конец таблицы.
<span class="table_block_install"><b> <?php /* Выводим версию веб-сервера Apache */ echo $_SERVER['SERVER_SOFTWARE']; echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; ?></b> </span>
- <span ...> - начало строкового контейнера.
- <b> - начало жирного выделения текста.
- <?php - открывающий тег PHP.
- <echo> - конструкция в PHP для вывода объектов.
- $_SERVER[] - встроенный массив, содержащий информацию о сервере, окружении и текущем запросе пользователя.
- 'SERVER_SOFTWARE' - строка идентификации сервера, указанная в заголовках, когда происходит ответ на запрос.
- <img src="" - атрибут, определяет местонахождение (URL) изображения.
- alt="" - атрибут тега img описания изображение.
- width="" - атрибут, определяет ширину блочных или заменяемых элементов (изображения).
- height="" - атрибут, определяет высоту блочных или заменяемых элементов (изображения).
- ?> - закрывающий тег PHP.
- </b> - конец жирного выделения текста.
- </span> - конец строкового контейнера.

Код приведенный ниже, является основным строковым контейнером для фразового контента, что по своей сути, является всего лишь оберткой, к классу table_block_install позже будут подключенны стили ранее созданного (пока пустого) файла install.css в директории css.
<span class="table_block_install"> </span>
«Наименование модуля» логично расположить в ячейке по левому краю формы, а контейнер «кода запросов PHP» отодвинуть, задав растояние, по правому. Это мы позже и пропишем в файле install.css.
Запросы
Ниже приведен основной перечень выводов запросов к серверу, который нами будет использоваться для отображения информации в таблице
echo PHP_OS; echo $_SERVER['SERVER_SOFTWARE']; echo PHP_VERSION; print_r(get_loaded_extensions()); echo phpversion('curl'); echo substr(sprintf('%o', fileperms('/tmp')), -4);
- PHP_OS - константа вывода только названия операционной системы.
- SERVER_SOFTWARE - идентификатор сервера.
- PHP_VERSION - информация о версии PHP.
- (get_loaded_extensions()) - возвращение массива имён скомпилированных и загруженных модулей.
- phpversion('curl') - возвращает версию загруженного модуля, в примере: curl
- fileperms — возвращает информацию о правах на файл
Блок логики версии PHP
Нами будет использоваться при написании приложения версия PHP не ниже 8.2
Логический операторы условия ЕСЛИ (if) и ИНАЧЕ (else) расмотрены в предыдущей главе 8.5. Файл server_check.php. В коде, приведенном ниже мы добавим тип данных с двумя возможными значениями: true (истина) и false (ложь).
<?php /* Выводим версию установленного PHP */ /* Проверим, что версия установленного PHP не ниже 8.2 */ if (version_compare(PHP_VERSION, '8.2.0') >= 0) { echo 'Версия PHP: ' . PHP_VERSION . '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; /* Иначе выводим просьбу обновить PHP*/ } else { echo 'Обновите версию PHP ' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } ?>
- version_compare() - сравнивает две «PHP-стандартизованные» строки с номерами версий.
Мы проверяем, что ЕСЛИ установленная версия PHP не ниже версии 8.2.0, тогда выводим сообщение: Версия PHP: номер установленной версии и иконку OK из директории /img c заданным размером 18×18, ИНАЧЕ выводим сообщение об ошибке: Обновите версию PHP, иконку ERROR из директории /img c заданным размером и переменной $install_error присваиваем значение true (истина).
Блок логики проверки модулей PHP
Мы рассмотрим принцип работы кода только для одного модуля cURL, остальные будет прописанны по этому шаблону.
<?php /* Проверим включен ли модуль cURL Module*/ $extensions = get_loaded_extensions(); if (!in_array('curl', $extensions)) { /* Когда cURL Module у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo "Включите cURL Module:"; echo '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('curl'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?>
- $extensions = get_loaded_extensions(); - присвоим переменной $extensions значение
возвращения массива имён загруженных модулей.
- in_array('curl', $extensions) - функция выполняет поиск значения curl в массиве, заданном переменной $extensions
- ! перед in_array() - означает отрицание, т.е, что не в массиве
Проверяем: ЕСЛИ curl не в массиве заданном переменной $extensions, тогда выводим сообщение: Включите cURL Module:, отображается иконка ERROR из директории /img c заданным размером и переменной $install_error присваиваем значение true (истина), ИНАЧЕ выводим сообщение: Установлено:, номер версии curl и иконку OK.
Блок логики проверки прав доступа
В этом блоке нам необходимо проверить, что директория, в которую приложение будет записывать данные, доступна для записи. К основным относятся:
- 0600 - Доступ на запись и чтение для владельца, нет доступа для других
- 0644 - Доступ на запись и чтение для владельца, доступ на чтение для других
- 0750 - Полный доступ для владельца, доступ на чтение и выполнение для группы владельца
- 0755 - Полный доступ для владельца, доступ на чтение и выполнение для других
- 0777 - Полный доступ для всех

Права доступа для проверки кода можно изменить командой
chmod("./includes/demo/", 0644);
Рассмотрим блок проверки прав доступа
<?php /* Проверим разрешения для папок */ $dir_includes = substr(sprintf('%o', fileperms('../includes/demo')), -4); if ($dir_includes == '0775') { echo '/demo доступна для записи'; echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } else { echo '/demo недоступна для записи' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } ?>
- $dir_includes - переменная, которой присвоим значение: отображение прав доступа в виде восьмеричного числа
- substr() - функция, которая вырезает и возвращает подстроку из строки
- sprintf() - функция, которая возвращает отформатированную строку
- fileperms() - возвращает информацию о правах доступа на файл
Проверка: ЕСЛИ переменная $dir_includes ровняется 0775, тогда выводим сообщение: /demo доступна для записи и отобразим иконку OK. ИНАЧЕ выводим сообщение: /demo недоступна для записи, отображаем иконку ERROR и переменной $install_error присваиваем значение true (истина).
Блок логики переменной $install_error
Данный блок необходим для вывода справочной информации по необходимым приложению модулям и расширениям, отображения сообщения:Невозможно продолжить. Исправьте ошибки и Обновите страницу, а так-же в случае успеха отобразить кнопку «Продолжить».

В блоках кода проверки выше, мы в случае ошибки присваивали переменной $install_error значение true
$install_error = true;
<?php // Если переменная $install_error хотя бы раз приняла // значение true, то выведим сообщение //Более подробную информацию о необходимых модулях можно найти на странице требований. //Невозможно продолжить. Исправьте ошибки и попробуйте еще раз. Обновить if ($install_error == true) { echo 'Более подробную информацию о необходимых модулях можно найти на ' . '<a href="./test_99.php" target="_blank">странице требований</a>'; echo '<p style="color: red"> Невозможно продолжить. Исправьте ошибки и ' . '<a href="./test_4.php"> Обновите страницу</a>' . '</p>' . '<br/>'; } else { /* Если значение переменной $install_error значение не равно true */ /* тогда выведим кнопку Продолжить */ echo ' <div class = "install_button"> <form action="database_options.php"> <input type="submit" value="Продолжить" name="button"> </form> </div>'; } ?>
Проверка: ЕСЛИ переменной $install_error присвоено значение true, тогда выводим сообщение: Более подробную информацию о необходимых модулях можно найти на, ссылка на страницу требований. ИНАЧЕ выводим блок кнопки «Продолжить» с активацией страницы конфигурации приложения.
Файл test_4.php
В директорию добавим тестовый файл test_4.php и записываем в него разобранный в этой главе код вывода запросов
- test_4.php
<!-- test_4.php --> <table> <tr> <td> Server OS: </td> <td> <span class="table_block_install"><b> <?php /* Выводим имя операционной системы сервера */ echo PHP_OS; ?></b> </span> </td> </tr> <tr> <td> Web server: </td> <td> <span class="table_block_install"><b> <?php /* Выводим версию веб-сервера Apache */ echo $_SERVER['SERVER_SOFTWARE']; echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; ?></b> </span> </td> </tr> <tr> <td> PHP ver. > 8.2 </td> <td> <span class="table_block_install"><b> <?php /* Выводим версию установленного PHP */ /* Проверим, что версия установленного PHP не ниже 8.2 */ if (version_compare(PHP_VERSION, '8.2.0') >= 0) { echo 'Версия PHP: ' . PHP_VERSION . '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; /* Иначе выводим просьбу обновить PHP*/ } else { echo 'Обновите версию PHP ' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } ?></b> </span> </td> </tr> <tr> <td> cURL Module: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли модуль pgsql Module, SimpleXML Module, PDO bz2 zlib sqlite3 zip mysqli*/ $extensions = get_loaded_extensions(); if (!in_array('curl', $extensions)) { /* Когда cURL Module у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo "Включите cURL Module:"; echo '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('curl'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> Folder Permissions: </td> <td> <span class="table_block_install"><b> <?php /* Проверим разрешения для папок */ $dir_includes = substr(sprintf('%o', fileperms('../includes/demo')), -4); if ($dir_includes == '0775') { echo "$dir_includes" . '/demo доступна для записи'; echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } else { echo "$dir_includes" . ' - /demo недоступна для записи' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } ?></b> </span> </td> </tr> </table> <?php // Если переменная $install_error хотя бы раз приняла // значение true, то выведим сообщение //Более подробную информацию о необходимых модулях можно найти на странице требований. //Невозможно продолжить. Исправьте ошибки и попробуйте еще раз. Обновить if ($install_error == true) { echo 'Более подробную информацию о необходимых модулях можно найти на ' . '<a href="./test_99.php" target="_blank">странице требований</a>'; echo '<p style="color: red"> Невозможно продолжить. Исправьте ошибки и ' . '<a href="./test_4.php"> Обновите страницу</a>' . '</p>' . '<br/>'; } else { /* Если значение переменной $install_error значение не равно true */ /* тогда выведим кнопку Продолжить */ echo ' <div class = "install_button"> <form action="database_options.php"> <input type="submit" value="Продолжить" name="button"> </form> </div>'; } ?>
Веведим в веб-браузере наш файл:
Как мы можем видеть, версия PHP у нашего сервера установлена ниже требуемой и часть модулей отключена (не установлена). При этом для тестовой директории demo установены права - 0644, что означает доступ на запись и чтение для владельца, доступ на чтение для других
curl для проверки выключен для наглядности примера
Если curl был включен, то система выдала бы «Установлено:,версию и иконку OK»
Файл server_check.php
Откроем в блокноте созданный ранее в директории /ucms/library/install/ файл server_check.php и запишем в него код из файла test_4.php, предварительно, убрав лишнее, а именно:
- комментарий <!– test_4.php –>
Добавим в начало файла следующий код PHP:
- server_check.php
<?php include "tpl/tpl_install_header.php"; /* Подключем файл cons.php из директории includes*/ include "../../includes/cons.php"; /* Объявим в переменной $file_config путь к файлу config.php для файла./ucms/library/install/server_check.php и проверим его наличие */ $file_config = FOLDER . '/includes/config.php'; /* Если файл config.php в директории /includes существует, приложение переведет на страницу выбора конфигурации ./ucms/library/install/database_options.php, которая пока у нас не создана*/ if (file_exists($file_config)) { /* Вызов header, с задержкой 5 сек перенаправит на страницу ./ucms/library/install/database_options.php */ header('Refresh: 5; URL = database_options.php'); echo "Обнаружена установленная версия приложения!"; echo "Можно установить дополненительную конфигурацию приложения!"; exit(); } ?>
- include "tpl/tpl_install_header.php"; подключаем файл заголовка нашего окна

Файл tpl_install_header.php в директории /tpl будет создан позднее в главе 8.7. Файл install.css и сейчас подключается, чтобы в будущем не возвращаться к этой главе.
- include "../../includes/cons.php"; подключем файл с константами cons.php из директории includes
- $file_config = FOLDER . '/includes/config.php'; задаем переменной $file_config в значение файл config.php в директории includes
- header('Refresh: 5; URL = database_options.php'); с задержкой 5 сек перенаправляем пользователя на страницу выбора установки конфигурации database_options.php
Проверка: ЕСЛИ файл $file_config тогда вызов header, с задержкой 5 сек перенаправит на страницу
./ucms/library/install/database_options.php с выводим сообщений:
Обнаружена установленная версия приложения!
Можно установить дополненительную конфигурацию приложения!
ИНАЧЕ будет выведена таблица проверки сервера.
Далее для необходимых нам модулей по шаблону кода из файла test_4.php, прописываем логику проверки в талице, заменив путь к проверяемой директории с /demo на ../../includes. Модули для проверки могут отличаться, в зависимости от цели создаваемого приложения, в нашем случае это:
- Bzip2 Function - используются для прозрачного чтения и записи сжатых файлов bzip2 (.bz2).
- cURL Module - позволяет подключаться и взаимодействовать со многими различными типами серверов с помощью многих различных типов протоколов (http, https, ftp, gopher, telnet, dict, file и ldap).
- GD Library - позволяет использовать функции изображений, включая создание и обработку файлов изображений в различных форматах, включая GIF , PNG , JPEG , WBMP и XPM.
- DOM Extension - позволяет выполнять операции с документами XML и HTML через API DOM с PHP.
- LDAP Protocol - облегченный протокол доступа к каталогам, который используется для доступа к «серверам каталогов».
- MySQLi Extension - позволяет получить доступ к функциональным возможностям MySQL 4.1 и выше.
- OpenSSL Extension - используются для симметричного и асимметричного шифрования и дешифрования, PBKDF2, PKCS7, PKCS12, X509 и других криптоопераций.
- PDO Extension - определяет легкий, последовательный интерфейс для доступа к базам данных в PHP.
- PDO_SQLITE Driver - драйвер, реализующий интерфейс PHP Data Objects (PDO) для обеспечения доступа к базам данных SQLite 3.
- SimpleXML Extension - предоставляет очень простой и удобный набор инструментов для преобразования XML в объект, который можно обрабатывать с помощью обычных селекторов свойств и итераторов массивов.
- SQLite3 Module - поддержка баз данных SQLite версии 3.
- Zip Extension - позволяет прозрачно читать или записывать сжатые ZIP-архивы и файлы внутри них.
- Zlib Module - позволяет прозрачно читать и записывать сжатые gzip (.gz) файлы с помощью версий большинства функций файловой системы , которые работают с файлами, сжатыми gzip
В конец нашего файла добавим следующий код «Прогресс-бара», чтобы пользователь знач, где он в данный момент находиться.
<?php <div class="progressbar"> <span style="width: 40%"></span> </div>

Код приведенный выше, это всего лишь обертка блока «Погресс-бара», который будет написан на чистом css и пока соответственно мы его не видим. Позже будут подключенны стили ранее созданного (пока пустого) файла install.css в директории css и «Погресс-бар» отобразиться.
И в заключение добавим «подвал» нашего окна
- include "tpl/tpl_install_footer.php"; подключаем файл «подвала» нашего окна

Файл tpl_install_footer.php в директории /tpl будет создан позднее в главе 8.7. Файл install.css и сейчас подключается, чтобы в будущем не возвращаться к этой главе.
Оформив правки и собрав воедино все описанное в данной главе записываем в файл server_check.php готовый код
- server_check.php
<?php include "tpl/tpl_install_header.php"; /* Подключем файл cons.php из директории includes*/ include "../../includes/cons.php"; /* Объявим в переменной $file_config путь к файлу config.php для файла./ucms/library/install/server_check.php и проверим его наличие */ $file_config = FOLDER . '/includes/config.php'; /* Если файл config.php в директории /includes существует, приложение переведет на страницу выбора конфигурации ./ucms/library/install/database_options.php, которая пока у нас не создана*/ if (file_exists($file_config)) { /* Вызов header, с задержкой 5 сек перенаправит на страницу ./ucms/library/install/database_options.php */ header('Refresh: 5; URL = database_options.php'); echo "Обнаружена установленная версия приложения!"; echo "Можно установить дополненительную конфигурацию приложения!"; exit(); } ?> <table> <tr> <td> Server OS: </td> <td> <span class="table_block_install"><b> <?php /* Выводим имя операционной системы сервера */ echo "" . PHP_OS ; ?></b> </span> </td> </tr> <tr> <td> Web server: </td> <td> <span class="table_block_install"><b> <?php /* Выводим версию веб-сервера Apache */ echo $_SERVER['SERVER_SOFTWARE']; echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; ?></b> </span> </td> </tr> <tr> <td> PHP ver. > 8.2 </td> <td> <span class="table_block_install"><b> <?php /* Выводим версию установленного PHP */ /* Проверим, что версия установленного PHP не ниже 8.2 */ if (version_compare(PHP_VERSION, '8.2.0') >= 0) { echo 'Версия PHP: ' . PHP_VERSION . '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; /* Иначе выводим просьбу обновить PHP*/ } else { echo 'Обновите версию PHP ' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } ?></b> </span> </td> </tr> <tr> <td> cURL Module: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли модуль pgsql Module, SimpleXML Module, PDO bz2 zlib sqlite3 zip mysqli*/ $extensions = get_loaded_extensions(); if (!in_array('curl', $extensions)) { /* Когда cURL Module у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo "Включите cURL Module:"; echo '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('curl'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> GD Library: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли модуль GD Library*/ $extensions = get_loaded_extensions(); if (!in_array('gd', $extensions)) { /* Когда GD Library Module у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo "Включите GD Library Module:"; echo '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('gd'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> SQLite3 Module: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли модуль sqlite3*/ $extensions = get_loaded_extensions(); if (!in_array('sqlite3', $extensions)) { /* Когда sqlite3 Module у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите sqlite3 Module' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('sqlite3'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> Zip Extension </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли модуль ZipArchive*/ $extensions = get_loaded_extensions(); if (!in_array('zip', $extensions)) { /* Когда Zip Extension у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите Zip Extension' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('zip'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> PDO Extension </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли PDO Extension*/ $extensions = get_loaded_extensions(); if (!in_array('PDO', $extensions)) { /* Когда PDO Module у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите PDO Extension' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('PDO'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> SimpleXML Extension: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли модуль SimpleXML Extension*/ $extensions = get_loaded_extensions(); if (!in_array('SimpleXML', $extensions)) { /* Когда SimpleXML Extension у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите SimpleXML Extension' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('SimpleXML'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> Bzip2 Function: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли модуль Bzip2 Function*/ $extensions = get_loaded_extensions(); if (!in_array('bz2', $extensions)) { /* Когда Bzip2 Function у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите Bzip2 Function' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('bz2'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> Zlib Module: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли модуль Zlib Module*/ $extensions = get_loaded_extensions(); if (!in_array('zlib', $extensions)) { /* Когда Zlib Module у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите Zlib Module' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('zlib'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> MySQLi Extension: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли MySQLi Extension*/ $extensions = get_loaded_extensions(); if (!in_array('mysqli', $extensions)) { /* Когда MySQLi Extension у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите MySQLi Extension' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('mysqli'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> PDO_SQLITE Driver: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли PDO_SQLITE Driver*/ $extensions = get_loaded_extensions(); if (!in_array('pdo_sqlite', $extensions)) { /* Когда PDO_SQLITE Driver у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите PDO_SQLITE Driver' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('pdo_sqlite'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> LDAP Protocol: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли LDAP Protocol*/ $extensions = get_loaded_extensions(); if (!in_array('ldap', $extensions)) { /* Когда LDAP Protocol у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите LDAP Protocol' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('ldap'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> OpenSSL Extension: </td> <td> <span class="table_block_install"><b> <?php /* Проверим включен ли OpenSSL Extension*/ $extensions = get_loaded_extensions(); if (!in_array('openssl', $extensions)) { /* Когда OpenSSL Extension у нас выключен, выводиться сообщение о невозможности продолжить, появляется ссылка кнопка на эту же страницу "Обновить"*/ echo 'Включите OpenSSL Extension' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } else { echo 'Установлено: ' . phpversion('openssl'); echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } ?></b> </span> </td> </tr> <tr> <td> Folder Permissions: </td> <td> <span class="table_block_install"><b> <?php /* Проверим разрешения для папок */ $dir_includes = substr(sprintf('%o', fileperms('../../includes')), -4); if ($dir_includes == '0775') { echo '/includes доступна для записи'; echo '<img src="img/good_green_ucms_creat_5.png" alt="good_green" width="18" height="18">'; } else { echo '/includes недоступна для записи' . '<img src="img/close_red_ucms_creat_5.png" alt="close_red" width="18" height="18">'; /* Присвоим переменной $install_error значение true */ /* т.е. ошибка установки - истина */ $install_error = true; } ?></b> </span> </td> </tr> </table> <?php // Если переменная $install_error хотя бы раз приняла // значение true, то выведим сообщение //Более подробную информацию о необходимых модулях можно найти на странице требований. //Невозможно продолжить. Исправьте ошибки и попробуйте еще раз. Обновить if ($install_error == true) { echo 'Более подробную информацию о необходимых модулях можно найти на ' . '<a href="./module_help.php" target="_blank">странице требований</a>'; echo '<p style="color: red"> Невозможно продолжить. Исправьте ошибки и ' . '<a href="./server_check.php"> Обновите страницу</a>' . '</p>' . '<br/>'; } else { /* Если значение переменной $install_error значение не равно true */ /* тогда выведим кнопку Продолжить */ echo ' <div class = "install_button"> <form action="options.php"> <input type="submit" value="Продолжить" name="button"> </form> </div>'; } ?> <div class="progressbar"> <span style="width: 40%"></span> </div> <?php include "tpl/tpl_install_footer.php"; ?>
Создадим в директории /ucms/library/install новый каталог для картинок и назовем его, к примеру - img, в нем мы будем хранить файлы иконок нашего установщика. Поместим в директорию /img файлы иконок OK, ERROR и Refresh.
Переместим файл config.php в директорию demo. И откроем файл server_check.php в браузере
При нажатии на ссылку «Обновите страницу» у нас обновиться страница в этом же окне, а при нажатии на ссылку «странице требований» откроется страница файла module_help.php в новом окне (за это отвечает target="_blank"), которая будет создана нами в следующей главе 8.6. Файл module_help.php
Обновим PHP до версии ⇒ 8.2 на нашем сервере и установим (включим) недостоющие модули и библиотеки, и нажмем ссылку «Обновите страницу»
Переместим назад файл config.php из директории demo. И откроем файл server_check.php в браузере
И через 5 сек нас перенаправит на следющее окно файла создания пользователя базы данных, который будет создан позднее.