- How to install and configure PHP
- Prerequisites
- Install PHP
- Install optional packages
- Configure PHP
- Test your setup
- Further reading
- Использование PHP для системного администрирования
- Как установить PHP на Linux и Windows
- Установка PHP на Linux
- Установка PHP на Windows
- Основы и примеры программирования на PHP
- Как создать резервную копию баз данных MySQL с помощью PHP
- Код на PHP, выполняющий резервное копирование базы данных, для системных администраторов
How to install and configure PHP
PHP is a general-purpose scripting language well-suited for Web development since PHP scripts can be embedded into HTML. This guide explains how to install and configure PHP in an Ubuntu System with Apache2 and MySQL.
Prerequisites
Before installing PHP you should install Apache (or a preferred web server) and a database service such as MySQL.
- To install the Apache package, please refer to our Apache guide.
- To install and configure a MySQL database service, refer to our MySQL guide.
Install PHP
PHP is available on Ubuntu Linux, but unlike Python (which comes pre-installed), must be manually installed.
To install PHP – and the Apache PHP module – you can enter the following command into a terminal prompt:
sudo apt install php libapache2-mod-php
Install optional packages
The following packages are optional, and can be installed if you need them for your setup.
- PHP-CLI
You can run PHP scripts via the Command Line Interface (CLI). To do this, you must first install the php-cli package. You can install it by running the following command:
sudo apt install php-mysql
sudo apt install php-pgsql
Configure PHP
If you have installed the libapache2-mod-php or php-cgi packages, you can run PHP scripts from your web browser. If you have installed the php-cli package, you can run PHP scripts at a terminal prompt.
By default, when libapache2-mod-php is installed, the Apache2 web server is configured to run PHP scripts using this module. First, verify if the files /etc/apache2/mods-enabled/php8.*.conf and /etc/apache2/mods-enabled/php8.*.load exist. If they do not exist, you can enable the module using the a2enmod command.
Once you have installed the PHP-related packages and enabled the Apache PHP module, you should restart the Apache2 web server to run PHP scripts, by running the following command:
sudo systemctl restart apache2.service
Test your setup
To verify your installation, you can run the following PHP phpinfo script:
You can save the content in a file – phpinfo.php for example – and place it under the DocumentRoot directory of the Apache2 web server. Pointing your browser to http://hostname/phpinfo.php will display the values of various PHP configuration parameters.
Further reading
- For more in depth information see the php.net documentation.
- There are a plethora of books on PHP 7 and PHP 8. A good book from O’Reilly is Learning PHP, which includes an exploration of PHP 7’s enhancements to the language.
- Also, see the Apache MySQL PHP Ubuntu Wiki page for more information.
Использование PHP для системного администрирования
Практическая значимость PHP для веб-разработки, впечатляет с точки зрения эффективности и универсальности. Большинство системных администраторов этим ограничиваются. Как и язык С#, PHP может быть мощным инструментом для системного администратора, несмотря на то, что PHP является по своей природе языком для веб-разработки.
Самым главным преимуществом PHP для системного администрирования является его кроссплатформенность. В отличие от таких традиционных инстументов, как bash для Linux или bat-файлы и скрипты Visual Basic для Windows, PHP скрипты легко переносятся из одной операционной системы в другую. Все, что необходимо это совместимость с интерпретатором PHP и установка необходимых модулей.
Как установить PHP на Linux и Windows
Если на веб сервере присутствует PHP как язык веб-сценариев, значит возможности командной строки также присутствует. И этого достаточно, чтобы использовать PHP, как инструмент системного администрирования.
Однако, отсутствие служб веб сервера не означает, что PHP нельзя установить как самостоятельный пакет программ. В таком случае необходимо выполнить установку по одной из инструкций в зависимости от операционной системы.
Установка PHP на Linux
Не вдаваясь в специфические для дистрибутива особенности управления пакетами, единственный модуль, который необходимо установить напрямую, — это php-cli. «Cli” означает “Command Line Interface” и переводится как «Интерфейс командной строки».
Установка php-cli настроит все необходимые зависимости для PHP, включая сам движок PHP.
Установка PHP на Windows
Как правило, PHP не входит в стандартный набор Windows, даже если установлен IIS. Весь пакет PHP необходимо вручную загрузить и скопировать в отдельный каталог, например в корень системного диска c:\php.
После установки PHP в файле php.ini необходимо включить различные модули, которые будут использоваться.
Основы и примеры программирования на PHP
Обратите внимание, строки вывода заканчиваются специальной последовательностью /n, обеспечивающая перевод на новую строку. Данный код выполнят последовательный перебор всех параметров командной строки. Синтаксис запуска скрипта выглядит следующим образом:
$ php test.php param1 param2 There are [0] parameters in _GET. There are [0] parameters in _POST. Parameter [0] is [test.php] Parameter [1] is [param1] Parameter [2] is [param2]
В целом, выполнение скриптов PHP не отличаются от веб сценариев. И в том и другом случае имеются входные параметры. Для HTML это данные, получаемые с помощью методов GET и POST, а для командной строки это переменные $argc и $argv, суть которых это количество аргументов, включая имя самого скрипта, и их значения соответственно.
Следует отметить, что хорошим тоном считается проверять установлено ли значение для переменных $_GET, $_POST, $argc или $argv и определить перед чтением. В особенности, если один и тот же скрипт будет использоваться как в web среде, так и в командной строке.
Как создать резервную копию баз данных MySQL с помощью PHP
Преимущество от применения PHP в рамках системного администрирования заключается в том, что можно использовать все расширяемые функции, которые предлагает PHP и которые могут быть недоступны в других средах. Например, единственный способ взаимодействия с базой данной MySQL для оболочки bash или батника Windows является использование конвейерные и промежуточные файлы для передачи SQL запросов в командную строку MySQL. Затем результаты должны быть перенаправлены в промежуточный файл и проанализированы скриптом. Это примерно так же, как использовать гаечный ключ в качестве молотка. PHP представляет широкий выбор надежных инструментов для работы с различными базами данных и другими технологиями.
Рассматриваемый ниже сценарий включает резервное копирование всех несистемных баз данных MySQL в файлы дампа SQL, а затем их сжатие. Эти файлы хранятся только в течение 2 недель, и каждый файл удаляется по истечении срока. PHP предоставляет встроенную поддержку для всех этих вещей.
Рассмотрим приведенный ниже код, показывающий, как работать с базами данных MySQL на PHP:
query($sql0); while ($row0 = $rs0->fetch_array(MYSQLI_BOTH)) < $dbName = trim ($row0[0]); // Exclude system dbs. if ( ("mysql" != $dbName) && ("information_schema" != $dbName) && ("test" != $dbName ) && ("performance_schema" != $dbName)) < //print "Found [" . $dbName . "]\n"; $dateStr = date ("Y-m-d"); //print $dateStr . "\n"; $cmd = "/usr/bin/mysqldump --user=" . DB_USER. " --password=" . DB_PASS . " " . $dbName . " >/home/dba/database_backups/" . $dateStr . "_" . $dbName . ".sql"; //print $cmd . "\n"; $commands[$x] = $cmd; $x++; $commands[$x] = "/usr/bin/bzip2 --force /home/dba/database_backups/" . $dateStr . "_" . $dbName . ".sql"; $x++; > > $conn->close(); > for ($x = 0; $x < count($commands); $x++) < print $commands[$x] . "\n"; if (1 == $x % 2) print "\n"; //system ($item); >// DELETION CODE GOES HERE. ?>
Используя сравнительно простые команды PHP, можно генерировать имена файлов с временными метками и производить сжатие полученных файлов. Этот пример выполняется на Linux и предполагается, что домашним каталогом является /home/dba. Однако, данный код можно легко адаптировать к выполнению на Windows, поскольку синтаксис MySQL такой же, а bzip2 заменить на инструмент сжатия подходящий для Windows.
Данный пример кода на PHP генерирует вот такой вывод:
$ php backup_databases_native.php /usr/bin/mysqldump --user=nonadmin_readonly --password=XXXXXX wordpress_db1 > ↩︎ /home/dba/database_backups/2021-10-21_wordpress_db1.sql /usr/bin/bzip2 --force /home/dba/database_backups/2021-10-21_wordpress_db1.sql /usr/bin/mysqldump --user=nonadmin_readonly --password=XXXXXX wordpress_db2_blog > ↩︎ /home/dba/database_backups/2021-10-21_wordpress_db2.sql /usr/bin/bzip2 --force /home/dba/database_backups/2021-10-21_wordpress_db2.sql /usr/bin/mysqldump --user=nonadmin_readonly --password=XXXXXX app_db > ↩︎ /home/dba/database_backups/2021-10-21_app_db.sql /usr/bin/bzip2 --force /home/dba/database_backups/2021-10-21_app_db.sql /usr/bin/mysqldump --user=nonadmin_readonly --password=XXXXXX udc1_db > ↩︎ /home/dba/database_backups/2021-10-21_udc1_db.sql /usr/bin/bzip2 --force /home/dba/database_backups/2021-10-21_udc1_db.sql
Примечание: ↩︎ указывает, что команда продолжается в текущей строке, но перенесена удобства отображения.
В целом, рекомендуется использовать полный путь к каждой внешней команде, которая будет выполняться. Причина в том, что если этот код выполняется в crontab Linux или в качестве запланированной задачи Windows, то путь к системному файлу может быть не доступен. Использование полного пути гарантирует отсутствие ошибок “команда не найдена”. Аналогичным образом, использование полного пути к целевому каталогу в самих командах гарантирует, что созданные файлы будут сохранены в нужных каталогах.
В завершении добавляем функционал удаления старых файлов резервных копий, как показано ниже:
$maxAge) < print "MUST DELETE [" . $fullPath . "]\n\n"; unlink ($fullPath); >else print "Keep it.\n\n"; > > closedir ($dh); > ?>
Представленный код не является чем то особенным с точки зрения возможностей PHP. Этот листинг является адаптацией давно существующей функциональности PHP.
Один из бонусов команды print в данном коде это то, что если код выполняется в crontab и установлен параметр MAILTO, выходные данные будут отображаться в электронных письмах, сгенерированных crontab.
Код на PHP, выполняющий резервное копирование базы данных, для системных администраторов
Этот простой пример существующего процесса резервного копирования базы данных и очистки от старых копий, который выполняется с помощью PHP, является верхушкой айсберга того, что PHP может сделать для системного администратора. Дополнительным преимуществом использования PHP является то, что администратору, свободно владеющим PHP, не нужно изучать разные скриптовые языки программирования для конкретных операционных систем. Использование скриптовых языков также осложняет перенос кода между командной строкой и web-среды.