Раздел помощи SpaceWeb

Установка модулей PEAR

12 июн, 2023

PEAR — это репозиторий классов (модулей) языка PHP, список доступных модулей можно увидеть на её официальном сайте — https://pear.php.net/packages.php. Установка модулей из данного репозитория на виртуальном хостинге возможна через официальную утилиту командной строки pear.

  1. Использование PEAR с PHP 7.0 и новее
  2. Использование PEAR с PHP 5.6

 На серверах виртуального хостинга по умолчанию доступна команда pear, но она работает только для версий PHP 5.2-5.6 включительно. Для установки модулей на PHP 7.0 и новее необходимо установить последнюю версию утилиты на аккаунт по инструкции ниже. Одновременная работа системной утилиты pear и утилиты, установленной локально, в рамках одного аккаунта не гарантируется.

Использование PEAR с PHP 7.0 и новее

Предварительная настройка

Перед установкой первого модуля предварительно необходимо установить последнюю версию утилиты pear, используя официальный установщик в консоли SSH в домашней директории:

1. Загрузить установщик

wget https://pear.php.net/go-pear.phar

2. Запустить установку

php7.4 go-pear.phar

На первом шаге можно выбрать все параметры по умолчанию, на втором на вопрос "Would you like to alter php.ini </etc/php/cli-php7.4/php.ini>? [Y/n]" необходимо ввести символ "n" (нет). На третьем шаге нужно подтвердить установку клавишей Enter.

3. Добавить путь к утилите в переменную $PATH, чтобы был доступен её запуск из любой папки на аккаунте

Добавьте в файл .profile в корне аккаунта строку вида:

export PATH=$HOME/pear/bin:$PATH

Если файла .profile в корне аккаунта нет, его необходимо предварительно создать.

4. Выйти из SSH-сессии и войти заново для применения изменений в $PATH

5. Обновить данные репозитория

pear channel-update pear.php.net

Установка модулей

Установка производится командой вида pear install -o <имя_модуля>. К примеру, установка пакета mail:

$ pear install -o mail
Did not download optional dependencies: pear/Net_SMTP, use --alldeps to download automatically
pear/Mail can optionally use package "pear/Net_SMTP" (version >= 1.10.0)
downloading Mail-1.5.0.tgz ...
Starting to download Mail-1.5.0.tgz (23,221 bytes)
........done: 23,221 bytes
install ok: channel://pear.php.net/Mail-1.5.0

Указание пути до папки c модулями в include_path

Самым последним действием нужно указать сайту путь до директории, в которой хранятся классы PEAR. Для этого достаточно добавить в файл .htaccess одну строку вида:

php_value include_path .:/home/<первая_буква_логина>/<логин>/pear/share/pear

в которую необходимо подставить данные в соответствии с вашим аккаунтом. Например, для логина testlogin директива будет выглядеть так:

php_value include_path .:/home/t/testlogin/pear/share/pear

Как альтернативный вариант, можно добавить указание пути к папке в начало PHP-скрипта, такой строкой:

ini_set('include_path','.:/home/t/testlogin/pear/share/pear');

Использование PEAR с PHP 5.6

Предварительная настройка

Перед установкой первого модуля предварительно необходимо создать файл с настройками в домашней директории такой командой по SSH (выполняется также из домашней директории):

pear config-create ~ .pearrc

Затем следует скопировать стандартные файлы PEAR, чтобы копия хранилась в домашнем каталоге:

PHP_PEAR_PHP_BIN=php5.6 pear install -o PEAR

Установка модулей

Установка производится командой вида PHP_PEAR_PHP_BIN=php5.6 pear install -o <имя_модуля>. К примеру, установка пакета File_Find:

$ PHP_PEAR_PHP_BIN=php5.6 pear install -o File_Find
downloading File_Find-1.3.3.tgz ...
Starting to download File_Find-1.3.3.tgz (8,212 bytes)
.....done: 8,212 bytes
install ok: channel://pear.php.net/File_Find-1.3.3

Указание пути до папки с модулями в include_path

Самым последним действием нужно указать сайту путь до директории, в которой хранятся классы PEAR. Для этого достаточно добавить в файл .htaccess одну строку вида:

php_value include_path .:/home/<первая_буква_логина>/<логин>/pear/php

в которую необходимо подставить данные в соответствии с вашим аккаунтом. Например, для логина testlogin директива будет выглядеть так:

php_value include_path .:/home/t/testlogin/pear/php

Как альтернативный вариант, можно добавить указание пути к папке в начало PHP-скрипта, такой строкой:

ini_set('include_path','.:/home/t/testlogin/pear/php');