Убедиться в функционировании PHP: инструкции и сценарии
Основные способы проверки установки PHP
Как проверить установку PHP через командную строку?
Наиболее эффективный и быстрый способ убедиться, что PHP установлен и доступен, - выполнить команду php -v в терминале. Она выводит версию PHP и информацию о сборке. Этот метод не требует веб-сервера и подходит для серверов без графического интерфейса.
php -v
PHP 8.2.0 (cli) (built: Nov 27 2022 10:45:26) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.2.0, Copyright (c) Zend Technologies
Пояснение: команда выводит номер версии, дату сборки и информацию о Zend Engine. Если PHP не установлен или не добавлен в переменную окружения PATH, появится сообщение command not found.
Проблемы и типичные ошибки:
- Ошибка command not found - PHP не установлен или не прописан в PATH. Решение: установить PHP (например, через пакетный менеджер) или добавить путь к исполняемому файлу в PATH.
- Вывод содержит предупреждения об отсутствии модулей - необходимо проверить зависимости и установить недостающие расширения.
- Версия CLI отличается от версии модуля веб-сервера - это нормально, но важно учитывать при развертывании.
Как просмотреть полную конфигурацию PHP через веб-интерфейс?
Функция phpinfo() отображает подробную информацию о версии PHP, загруженные расширения, переменные окружения и многое другое. Для этого создаётся файл с содержимым:
<?php phpinfo(); ?>
Результат - многостраничная таблица с настройками. Этот способ удобен для диагностики, но не рекомендуется на рабочих серверах.
Проблемы:
- В браузере отображается исходный код скрипта - значит, веб-сервер не обрабатывает PHP. Решение: настроить сервер (установить модуль PHP, проверить конфигурацию).
- Пустая страница - возможна ошибка синтаксиса или отключён вывод ошибок. Следует включить отображение ошибок через error_reporting(E_ALL);.
Как быстро убедиться, что PHP работает на веб-сервере?
Создаётся файл test.php с простейшим содержимым:
<?php echo 'PHP works'; ?>
При обращении к файлу через браузер отображается PHP works. Это минимальная проверка работоспособности.
Ошибки:
- Ошибка синтаксиса - если скрипт содержит опечатки. Проверка через php -l test.php выявляет ошибки.
- Пустой ответ - возможно, PHP установлен, но не подключён к веб-серверу.
Как получить список установленных расширений PHP?
Команда php -m выводит все скомпилированные и загруженные расширения. Полезна для проверки наличия необходимых модулей (например, PDO, mbstring).
php -m
[PHP Modules] calendar ctype curl date dom exif fileinfo filter ftp gd gettext ... [Zend Modules] Zend OPcache
Как узнать, какой конфигурационный файл загружен?
Команда php -i | grep "Loaded Configuration" показывает путь к файлу php.ini, который используется в текущей сессии.
php -i | grep "Loaded Configuration"
Loaded Configuration File => /etc/php/8.2/cli/php.ini
Это помогает убедиться, что изменения в php.ini применяются.
Как проверить различие версий CLI и веб-модуля?
Версия PHP для командной строки и для веб-сервера может отличаться. Для проверки используется phpinfo() через веб-сервер и сравнение с выводом php -v. Разные версии могут вызывать несовместимость кода.
Цели использования: диагностика перед разработкой, проверка после установки или обновления PHP, выявление конфликтов расширений, подтверждение корректной конфигурации для приложения.
Расширенные примеры проверки PHP
Ниже приведены нестандартные и подробные способы проверки установки PHP.
Пример 1: Использование встроенного веб-сервера PHP
PHP предоставляет встроенный сервер для разработки. Он позволяет быстро проверить, как скрипты работают без установки Apache или Nginx.
php -S localhost:8000 -t /home/user/project
После запуска сервера другой терминал выполняет запрос:
curl http://localhost:8000/index.php
<!DOCTYPE html> <html>...</html> (или вывод скрипта)
Пояснение: встроенный сервер полезен для изолированной проверки. Ошибки подключения указывают на проблемы с портом или правами.
Пример 2: Проверка наличия конкретного расширения через PHP-код
Может потребоваться программно проверить, установлено ли расширение, например, PDO или mbstring.
php -r "echo extension_loaded('pdo') ? 'PDO загружено' : 'PDO не найдено';"
PDO загружено
Пояснение: функция extension_loaded() возвращает true/false. Аналогично можно проверить любое расширение.
Пример 3: Проверка синтаксиса PHP-файла
Перед выполнением скрипта проверка синтаксиса выявляет ошибки без запуска.
php -l /var/www/html/test.php
No syntax errors detected in /var/www/html/test.php
Если есть ошибка, вывод укажет строку и тип ошибки.
Пример 4: Фильтрация вывода phpinfo для конкретных разделов
Чтобы получить только общие сведения и конфигурацию, используется константа INFO_GENERAL | INFO_CONFIGURATION.
php -r "phpinfo(INFO_GENERAL | INFO_CONFIGURATION);"
Результат - только выбранные разделы, что ускоряет поиск нужных параметров.
Пример 5: Проверка PHP внутри Docker-контейнера
Если PHP работает в контейнере, проверка выполняется через запуск временного контейнера с образом PHP.
docker run --rm php:8.2-cli php -v
PHP 8.2.0 (cli) (built: Nov 27 2022 10:45:26) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.2.0, Copyright (c) Zend Technologies
Пояснение: образ php:8.2-cli содержит только CLI. Для веб-версии используется образ php:8.2-apache.
Пример 6: Проверка заголовка X-Powered-By через curl
Веб-сервер может отправлять заголовок, указывающий на PHP. Это позволяет убедиться, что PHP обрабатывает запросы.
curl -I http://localhost/phpinfo.php 2>&1 | grep -i "x-powered-by"
X-Powered-By: PHP/8.2.0
Отсутствие заголовка говорит о том, что PHP не обрабатывает запрос (например, сервер отдаёт статический файл).
Пример 7: Получение значения конкретной директивы php.ini
Команда php -i с фильтром позволяет узнать значение параметра, например, max_execution_time.
php -i | grep -i "max_execution_time"
max_execution_time => 30 => 30
Пояснение: первое значение - локальное, второе - глобальное (если отличается).
Пример 8: Проверка разрядности PHP (32 или 64 бита)
Используется константа PHP_INT_SIZE: 4 для 32-битной платформы, 8 для 64-битной.
php -r "echo PHP_INT_SIZE;"
8
Это важно при работе с большими числами или определёнными библиотеками.