?

Log in

No account? Create an account

Entries by category: it

Как установить PECL-расширение во FreeBSD
coderua
Что такое PECL и с чем его едят я коротко описал в предыдущем посте "Как установить PECL-расширение в Ubuntu"

В ОС FreeBSD PECL-расширения очень просто устанавливаются из портов.
Имя порта формируется по следующему принципу: pecl-<имя_pecl_пакета>.
Например, если нужно установить пакет pecl_http, то имя порта будет pecl-http, или libevent - порт будет называться pecl-libevent.


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

3. Исходная система.
FreeBSD 8.2-RELEASE, Apache-2.2.17_1, PHP 5.3.8 и т.п.

4. Процесс установки.
  1. Ищем необходимый пакет:
    whereis pecl-http
    Результат выдаст нам путь по которому находится порт pecl-http: /usr/ports/www/pecl-http

  2. Перейдем в директорию с портом:

    cd /usr/ports/www/pecl-http

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

    # make install clean

  4. Если все пройдет без ошибок, то вы увидите на экране приблизительно следующую строку:

    ===> Cleaning for pecl-http.

    В файл /usr/local/etc/php/extensions.ini будет добавлена строка, подключающая библиотеку:
    extension=http.so
  5. Перезапустим веб-сервер Apache
    # apachectl restart

Как установить 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