Вопрос Установите пакеты PECL на ubuntu


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

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

  1. Я установил PHP
  2. Я установил libcurl, а затем php5-dev
  3. Я попытался установить расширение PECL, и он говорит: PHPIZE не найдено.

31
2018-01-10 09:05


происхождения


Добро пожаловать в Ask Ubuntu. Можете, пожалуйста, дать нам полную команду, которую вы выпустили, и полное сообщение об ошибке. Измените текст вопроса, чтобы добавить информацию, пожалуйста. - MadMike


ответы:


Во-первых, вам нужно будет установить 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 

источник


40
2018-01-10 09:43



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


В дополнение к ответу @ 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 )


4
2017-07-05 01:31



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


В дополнение к ответам 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. Он может зависеть от типа модуля, который вам нужно использовать. Для raphf 20 кажется прекрасным. (Обновить: если вы ищете 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
2018-01-04 10:16