?

Log in

No account? Create an account
Previous Entry Share Next Entry
Как установить PECL-расширение в Ubuntu
coderua
1. Лирическое отступление
PECL (англ. PHP Extension Community Library) — это репозиторий модулей для PHP, написанных на C, доступных через систему пакетов PEAR. PECL был создан, когда возникла проблема удаления некоторых модулей из стандартной поставки PHP. Модули PECL разработаны в соответствии со стандартами кодирования, которые приняты командой разработчиков PHP
Более подробно читаем здесь: Википедия, http://pecl.php.net/.

2. Задача.
Установить необходимые расширения. В моем случаее это pecl_http
Ошибка которую выдает веб-сервер и свидетельствует, что расширение не установлено, выглядит вот так:
Fatal error: Call to undefined function http_get() in some_file.php on line xxx


3. Исходная система.
Linux Ubuntu 10.10, Apache 2.2.16, PHP 5.3.3 и т.п.

4. Процесс установки.

  1. Устанавливаем PEAR из репозиториев:
    sudo apt-get install php-pear

  2. При установке, нам будет предложено установить пакеты php5-dev и/или php4-dev. Устанавливаем:
    sudo apt-get install php5-dev

  3. sudo apt-get install libcurl3-openssl-dev

  4. После всего этого можно будет устанавливать pecl-библиотеки. Установим нужную нам библиотеку:
    sudo pecl install pecl_http

  5. Если всё прошло удачно, инсталятор выдаст следующее: You should add "extension=http.so" to php.ini.
    Это означает, что для подключения расширения к PHP необходимо внести данную строчку в файл /etc/php5/apache2/php.ini. Если возникли ошибки, смотрите ниже.

  6. Добавим строку в файл
    sudo echo "extension=http.so" >> /etc/php5/apache2/php.ini && sudo echo "extension=http.so" >> /etc/php5/cli/php.ini

  7. Перезапустим веб-сервер
    sudo /etc/init.d/apache2 restart или sudo /etc/init.d/httpd restart

  8. Если видим [OK], значит всё сделано верно.

Внимание!
Во время выполнения комманды в пункте №5 может возникнуть следующая ошибка: "Fatal error: Call to undefined method PEAR::raiseErro() in /usr/share/php/PEAR/REST.php on line 165";
Решение:
1. Узнаем какая директория используется PEAR для кеша. Выполним комманду:
pear config-get cache_dir
Результат: /tmp/pear/cache
2. Вот этой директории и не хватает. Создаем её:
sudo mkdir -p /tmp/pear/cache