Содержание

8.5. Файл server_check.php

Введение

Файл server_check.php - исполнительный файл, который будет проверять наш веб-сервер, а именно:

Так-же этот файл будет иметь функцию вывода информации (отображение данных файла module_help.php) о необходимых модулях и логику поведения приложения при разных действиях пользователя.

Подготовка

Создадим в директории /test вложенную директорию img для хранения и вывода иконок. В ней мы сохраним файлы иконок OK, ERROR и Refresh нашего установщика: загрузить иконку OK , загрузить иконку ERROR , загрузить иконку Refresh.

Основная часть файла это перечисление, оформленное в таблице - структурированного набора данных, состоящего из строк и столбцов, внутри которой помещен заголовок и код запросов PHP.

<table>
    <tr>
		<td>
			Наименование модуля
		</td>
		<td>
			<?php echo "" . PHP_OS ; ?>
		</td>
	</tr>	
</table>
			<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>
:&11: Пимечание:
Код приведенный ниже, является основным строковым контейнером для фразового контента, что по своей сути, является всего лишь оберткой, к классу 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

Нами будет использоваться при написании приложения версия 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;
	}
?>

Мы проверяем, что ЕСЛИ установленная версия 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">';
	}
?>

возвращения массива имён загруженных модулей.

Проверяем: ЕСЛИ curl не в массиве заданном переменной $extensions, тогда выводим сообщение: Включите cURL Module:, отображается иконка ERROR из директории /img c заданным размером и переменной $install_error присваиваем значение true (истина), ИНАЧЕ выводим сообщение: Установлено:, номер версии curl и иконку OK.

Блок логики проверки прав доступа

В этом блоке нам необходимо проверить, что директория, в которую приложение будет записывать данные, доступна для записи. К основным относятся:

:&11: Пимечание:
Права доступа для проверки кода можно изменить командой
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 ровняется 0775, тогда выводим сообщение: /demo доступна для записи и отобразим иконку OK. ИНАЧЕ выводим сообщение: /demo недоступна для записи, отображаем иконку ERROR и переменной $install_error присваиваем значение true (истина).

Блок логики переменной $install_error

Данный блок необходим для вывода справочной информации по необходимым приложению модулям и расширениям, отображения сообщения:Невозможно продолжить. Исправьте ошибки и Обновите страницу, а так-же в случае успеха отобразить кнопку «Продолжить».

:&11: Пимечание:
В блоках кода проверки выше, мы в случае ошибки присваивали переменной $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, предварительно, убрав лишнее, а именно:

Добавим в начало файла следующий код 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();
}
?>
:&11: Пимечание:
Файл tpl_install_header.php в директории /tpl будет создан позднее в главе 8.7. Файл install.css и сейчас подключается, чтобы в будущем не возвращаться к этой главе.

Проверка: ЕСЛИ файл $file_config тогда вызов header, с задержкой 5 сек перенаправит на страницу ./ucms/library/install/database_options.php с выводим сообщений: Обнаружена установленная версия приложения!
Можно установить дополненительную конфигурацию приложения! ИНАЧЕ будет выведена таблица проверки сервера.

Далее для необходимых нам модулей по шаблону кода из файла test_4.php, прописываем логику проверки в талице, заменив путь к проверяемой директории с /demo на ../../includes. Модули для проверки могут отличаться, в зависимости от цели создаваемого приложения, в нашем случае это:

В конец нашего файла добавим следующий код «Прогресс-бара», чтобы пользователь знач, где он в данный момент находиться.

<?php 
<div class="progressbar">
  <span style="width: 40%"></span>
</div> 
:&11: Пимечание:
Код приведенный выше, это всего лишь обертка блока «Погресс-бара», который будет написан на чистом css и пока соответственно мы его не видим. Позже будут подключенны стили ранее созданного (пока пустого) файла install.css в директории css и «Погресс-бар» отобразиться.

И в заключение добавим «подвал» нашего окна

:&11: Пимечание:
Файл 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 сек нас перенаправит на следющее окно файла создания пользователя базы данных, который будет создан позднее.