Установите пакеты PECL в Ubuntu

32

Я пробовал это 100 раз, я действительно новичок в Ubuntu и закончил с кучей ошибок, которые я даже не понимаю, может кто-нибудь, пожалуйста, помогите мне ??

Вот что я сделал:

  1. Я установил PHP
  2. Я установил libcurl затем php5-dev
  3. Я попытался установить расширение PECL, и он говорит, что PHPIZEне найден.
maniteja
источник
Добро пожаловать в Спросите Ubuntu. Пожалуйста, дайте нам полную команду, которую вы дали, и полное сообщение об ошибке. Отредактируйте текст вашего вопроса, чтобы добавить информацию, пожалуйста.
MadMike

Ответы:

48

Во-первых, вам нужно будет установить PEAR через, apt-getчтобы получить необходимый пакет и систему распространения, которые оба PEARи PECLиспользуют. В командной строке введите:

sudo apt-get install php-pear

Вам будет предложено подтвердить установку. Просто нажмите «y» и введите. Если все пойдет хорошо, вы должны увидеть, как он скачал и установил пакет php-pear.

Теперь вам нужно установить пакет php5-dev, чтобы получить необходимые исходные файлы PHP5 для компиляции дополнительных модулей. Введите в командной строке следующее:

sudo apt-get install php5-dev

Если вы не установите пакет php5-dev и попытаетесь установить расширение PECL с помощью «pear install», вы получите следующую ошибку:

sh: phpize: not found
ERROR: `phpize’ failed

Расширение PECL_HTTP требует установки дополнительного пакета зависимостей. Вы можете пропустить это для других расширений:

sudo apt-get install libcurl3-openssl-dev

Теперь мы наконец готовы установить расширение. В командной строке введите следующее, но замените «pecl_http» именем расширения PECL, которое вы устанавливаете:

sudo pecl install pecl_http

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

После завершения установки вам, вероятно, будет предложено добавить строку «extension =» в ваш файл php.ini. Откройте файл php.ini в вашем любимом текстовом редакторе и добавьте строку под разделом «Динамические расширения». В Ubuntu файл php.ini, кажется, находится в папке / etc / php5 / apache2:

sudo nano /etc/php5/apache2/php.ini

В этом примере установка расширения pecl_http попросила меня добавить «extension = http.so». Теперь, когда файл php.ini обновлен, необходимо будет перезапустить Apache, чтобы загрузить новое расширение:

sudo /etc/init.d/apache2 restart 

источник

Maythux
источник
это были те же самые шаги, которые я точно выполнял (из того же источника), но до сих пор не радуюсь: / я перешел в Ubuntu только из-за некоторых расширений, которые недоступны в Windows, но это очень запутанно, потому что я новичок в этом.
Maniteja
1
ОБРАТИТЕ ВНИМАНИЕ: Вам может потребоваться установить makeперед этим. Просто сделайsudo apt-get install make
Tomanow
5
Если вы используете PHP7, вам понадобится php7.0-devпакет:sudo apt-get install php7.0-dev
Грэм Свон
4

В дополнение к ответу @ Ask мне также нужно было сделать:

sudo apt-get install libpcre3-dev

перед запуском, pecl install pecl_httpпотому что я получаю эту ошибку о pcre.h:

фатальная ошибка: pcre.h: компиляция такого файла или каталога не прекращена.

Кроме того, вместо редактирования php.iniфайла я создал новый файл с именем pecl-http.iniв conf.dподкаталоге, где находится php.iniфайл (в Ubuntu /etc/php5/apache2/conf.d)

И мне нужно было добавить в три строки:

extension=raphf.so
extension=propro.so
extension=http.so

Наконец, так как в этой установленной версии 2.0.6я не мог использовать http_get_request_headersфункцию, но мне нужно было вместо этого использовать версию с пространством имен, \http\Env::getRequestHeader() подробности см. Здесь

PS: не забудьте перезапустить Apache, когда вы закончите ( service apache2 restart)

УХО
источник
Хороший звонок; Жаль, что я не прочел твой ответ, прежде чем отправился на охоту за libcre-dev. Я также должен добавить, что в моем случае мне нужно было добавить extension=json.soперед http.soстрокой, несмотря на то, что json.iniфайл уже был включен в conf.d.
M1ke
1

В дополнение к ответам Maythux и cwd вы, возможно, не захотите редактировать свой файл php.ini, поскольку эти изменения могут потеряться при обновлении.

Debian (и, следовательно, Ubuntu) обрабатывает модули php так же, как модули apache. Взгляните /etc/php5, вы найдете такие каталоги:

apache2/
cli/
mods-available/

Когда вы смотрите в, mods-availableвы видите несколько файлов, таких как:

curl.ini
gd.ini
json.ini
mysql.ini
…

Чтобы включить / отключить эти доступные моды для всех API (apache, cli, cgi), вы можете просто использовать команды php5enmodили php5dismodтак:

$ sudo php5enmod curl

соответственно

$ sudo php5dismod curl

Это создаст (или удалит) символические ссылки на файл конфигурации модуля в apache2/conf.d/и cli/conf.d/.

Вы также можете указать sapi для включения / отключения мода (в данном случае apache):

$ sudo php5enmod -s apache2

pecl installможет не создать файл конфигурации для raphf(и других модулей, установленных с ним), но вы можете создать его самостоятельно:

$ sudo touch /etc/php5/mods-available/raphf.ini

Затем напишите в следующих строках:

; configuration for php raphf module
; priority=20
extension=raphf.so

Приоритет по умолчанию - 20. Это может зависеть от типа модуля, какой приоритет вы должны использовать. Для raphf20 вроде нормально. ( Обновление : если вы ищете pecl_http, в версии 2 он должен быть загружен после rapfhи propro, таким образом установить приоритет в mods-available/http.iniс 30.)

С этим вы можете включить модуль:

$ sudo php5enmod raphf

(Примечание: мой ответ зависит от Ubuntu 14.04, но может работать аналогичным образом для 13.04, см. Http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu )

Дэвид
источник
1

Теперь, установите PEAR таким образом, чтобы получить его из источника:

wget http://pear.php.net/go-pear.phar
php go-pear.phar
Anuga
источник