Просмотр опций PHP в администрировании Joomla

Раздел: CMS -> Администрирование Joomla

Основные способы просмотра опций PHP в Joomla

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

Как посмотреть все настройки PHP через административную панель Joomla?

Наиболее простой и безопасный способ - использовать встроенный инструмент Joomla «Информация о PHP».

  1. Войти в панель администратора Joomla.
  2. Перейти в меню «Система» → «Системная информация».
  3. Выбрать вкладку «Информация о PHP».

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

Цель использования

Быстрая диагностика - проверка memory_limit, upload_max_filesize, max_execution_time и других критичных для Joomla параметров. Подходит для ежедневного администрирования.

Возможные проблемы и ошибки

  • Страница может не загрузиться, если PHP отключен или сконфигурирован с ограничениями на вывод информации. Решение: проверить файл php.ini на наличие disable_functions, в котором может быть указана функция phpinfo.
  • Некоторые хостинги отключают страницу системной информации из соображений безопасности. В таком случае следует использовать альтернативные методы.

Как получить полную информацию о PHP вне панели Joomla с помощью phpinfo()?

Создание собственного PHP-файла с функцией phpinfo() - классический способ, работающий на любом сервере.


<?php
phpinfo();
?>
  

Файл следует сохранить (например, как info.php) и загрузить в корневую директорию Joomla. При обращении к нему через браузер отобразится детальная информация о PHP.

Цель использования

Когда встроенный инструмент Joomla недоступен (например, из-за ошибки входа в админку). Также полезен для быстрой проверки на чистом сервере.

Возможные проблемы и ошибки

  • Файл может не выполняться из-за запрета на выполнение PHP в корневой папке. Проверьте настройки веб-сервера (например, .htaccess).
  • После завершения диагностики файл нужно немедленно удалить, так как он раскрывает конфиденциальную информацию о сервере.
  • На некоторых хостингах функция phpinfo() заблокирована через disable_functions. Выход - использовать CLI или файл конфигурации.

Как просмотреть настройки PHP через командную строку (CLI)?

Если есть доступ к серверу по SSH, можно использовать интерпретатор PHP напрямую.


php -i
  

Эта команда выводит ту же информацию, что и phpinfo(). Её можно перенаправить в файл для удобства:


php -i > phpinfo.txt
  

Для получения значения конкретной директивы используется опция -r:


php -r "echo ini_get('memory_limit');"
  

Цель использования

Диагностика на серверах без веб-интерфейса, а также для автоматизации сбора данных (скрипты cron).

Возможные проблемы и ошибки

  • Команда php может отсутствовать, если она не добавлена в PATH. Уточните полный путь: /usr/bin/php или /usr/local/bin/php.
  • Версия PHP в CLI может отличаться от модуля веб-сервера. Проверьте вывод php -v и сравните с версией из phpinfo() через веб.

Как узнать опции PHP из файла конфигурации php.ini?

Непосредственное чтение файла php.ini позволяет увидеть установленные значения.

Определить местоположение файла можно через phpinfo() или командой:


php -i | grep "Loaded Configuration File"
  

Затем просмотреть файл, например, через cat:


cat /etc/php/8.1/apache2/php.ini
  

Или найти конкретную директиву:


grep -i "^memory_limit" /etc/php/8.1/apache2/php.ini
  

Цель использования

Просмотр актуальных настроек без запуска PHP, а также редактирование конфигурации (непосредственно или через хостинг-панель).

Возможные проблемы и ошибки

  • На сервере может быть несколько файлов php.ini для разных SAPI (CLI, apache2, fpm). Убедитесь, что смотрите именно тот, который использует веб-сервер.
  • Директивы могут быть переопределены на уровне директории через .htaccess или пользовательские php.ini. Прямое чтение файла не покажет эти переопределения.

Как получить информацию о PHP через панель хостинга (cPanel, Plesk)?

Большинство панелей предоставляют раздел «Информация о PHP» или «PHP Settings». Например, в cPanel используется инструмент «Select PHP Version».

Цель использования

Быстрая проверка без доступа к веб-панели Joomla или командной строке. Особенно удобно на shared-хостинге.

Возможные проблемы и ошибки

  • Интерфейс зависит от провайдера, информация может быть неполной. В таком случае дополнительно используйте метод с phpinfo().
  • Некоторые настройки (например, memory_limit) могут быть зафиксированы хостингом и не меняться через панель.

Расширенные примеры и сценарии использования

Пример 1: Сохранение полной информации о PHP в файл и её фильтрация

Администратору требуется получить только настройки, критичные для Joomla (memory_limit, upload_max_filesize, post_max_size, max_execution_time).

Пример

<?php
$settings = [
    'memory_limit',
    'upload_max_filesize',
    'post_max_size',
    'max_execution_time',
    'max_input_time',
    'session.gc_maxlifetime',
    'session.save_path',
    'date.timezone',
    'display_errors',
    'error_reporting'
];

echo "<table border='1'>";
echo "<tr><th>Директива</th><th>Значение</th></tr>";
foreach ($settings as $key) {
    $val = ini_get($key);
    $val = $val === false ? 'не установлено' : $val;
    echo "<tr><td>{$key}</td><td>{$val}</td></tr>";
}
echo "</table>";
?>

Результат выполнения (вывод в браузер):

<table border='1'>
  <tr><th>Директива</th><th>Значение</th></tr>
  <tr><td>memory_limit</td><td>256M</td></tr>
  <tr><td>upload_max_filesize</td><td>128M</td></tr>
  <tr><td>post_max_size</td><td>130M</td></tr>
  <tr><td>max_execution_time</td><td>60</td></tr>
  <tr><td>max_input_time</td><td>60</td></tr>
  <tr><td>session.gc_maxlifetime</td><td>1440</td></tr>
  <tr><td>session.save_path</td><td>/var/lib/php/sessions</td></tr>
  <tr><td>date.timezone</td><td>Europe/Moscow</td></tr>
  <tr><td>display_errors</td><td>Off</td></tr>
  <tr><td>error_reporting</td><td>22527</td></tr>
</table>

Пояснение: скрипт удобен для быстрой проверки соответствия настроек PHP рекомендациям Joomla. Администратор может сравнить полученные значения с оптимальными и внести изменения в php.ini.

Пример 2: Сравнение версии PHP и доступных расширений с минимальными требованиями Joomla

Автоматическая проверка через скрипт с выводом статуса.

Пример

<?php
$required = [
    'php' => '8.0.0',
    'extensions' => ['pdo', 'mysqli', 'json', 'mbstring', 'xml', 'zip']
];

$currentVersion = phpversion();
$versionStatus = version_compare($currentVersion, $required['php'], '>=') ? 'OK' : 'FAIL';
echo "Версия PHP: {$currentVersion} (требуется >= {$required['php']}) - {$versionStatus}\n";

foreach ($required['extensions'] as $ext) {
    $loaded = extension_loaded($ext);
    $status = $loaded ? 'OK' : 'FAIL';
    echo "Расширение {$ext}: " . ($loaded ? 'загружено' : 'не загружено') . " - {$status}\n";
}
?>

Результат выполнения:

Версия PHP: 8.1.2 (требуется >= 8.0.0) - OK
Расширение pdo: загружено - OK
Расширение mysqli: загружено - OK
Расширение json: загружено - OK
Расширение mbstring: загружено - OK
Расширение xml: загружено - OK
Расширение zip: загружено - OK

Пояснение: такой скрипт можно разместить временно на сервере или запустить через CLI. Он помогает администратору Joomla убедиться, что среда соответствует требованиям перед обновлением CMS.

Пример 3: Использование CLI для поиска директив, влияющих на загрузку файлов

Рекомендуется выполнить серию команд для проверки лимитов.

Пример

# Получить максимальный размер загружаемого файла
php -r "echo 'upload_max_filesize: ' . ini_get('upload_max_filesize') . PHP_EOL;"
php -r "echo 'post_max_size: ' . ini_get('post_max_size') . PHP_EOL;"
php -r "echo 'memory_limit: ' . ini_get('memory_limit') . PHP_EOL;"

Результат:

upload_max_filesize: 64M
post_max_size: 68M
memory_limit: 128M

Пояснение: последовательный вызов команд быстрее, чем открытие phpinfo(). Позволяет сосредоточиться на конкретных настройках.

Пример 4: Сохранение вывода php -i в структурированный формат

Для последующего парсинга можно использовать опцию -i с grep и awk.

Пример

# Сохранить вывод в JSON-подобный формат (не строгий)
php -i | grep -E '^(PHP Version|Loaded Configuration|memory_limit|upload_max|post_max|max_execution|disable_functions)' | sed 's/ = /: /' | awk '{print "\""$1"\": \""$2"\","}'

Пример вывода (фрагмент):

"PHP Version": "8.1.2",
"Loaded Configuration": "/etc/php/8.1/cli/php.ini",
"memory_limit": "128M",
"upload_max_filesize": "64M",
"post_max_size": "68M",
"max_execution_time": "60",
"disable_functions": "exec,system,passthru,shell_exec",

Пояснение: такой подход полезен для интеграции с системами мониторинга или для сохранения снимка конфигурации.

Пример 5: Использование Joomla API для получения информации о PHP

В Joomla существует класс Joomla\CMS\Environment\PhpInformation, но он не предоставляет доступ ко всем директивам. Однако можно получить информацию о расширениях.

Пример

use Joomla\CMS\Environment\PhpInformation;

$info = PhpInformation::getInstance();
$extensions = $info->getLoadedExtensions();
echo "Расширения, критичные для Joomla: " . implode(', ', $extensions['required']) . "\n";
echo "Рекомендованные расширения: " . implode(', ', $extensions['recommended']);

Результат (пример для Joomla 4):

Расширения, критичные для Joomla: json, pdo, mbstring
Рекомендованные расширения: curl, gd, intl

Пояснение: данный код выполняется в контексте Joomla (например, в модуле или плагине). Он не даёт всех настроек php.ini, но полезен для программной проверки совместимости.

Просмотр опции PHP - comments

En
View php option (php)