Встановіть пакети PECL на ubuntu


32

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

Ось що я зробив:

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

Ласкаво просимо до Ask 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 за допомогою "встановлення груші", ви отримаєте таку помилку:

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

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

sudo apt-get install libcurl3-openssl-dev

Тепер ми нарешті готові фактично встановити розширення. У запиті оболонки введіть наступне, але замініть "pecl_http" на ім'я розширення PECL, яке ви встановлюєте:

sudo pecl install pecl_http

Інсталятор може запитати вас про деякі конкретні параметри розширення, яке ви встановлюєте. Ви, ймовірно, можете просто натиснути клавішу Enter або один раз або кілька разів, щоб прийняти всі типові настройки, якщо ви не хочете встановити конкретні параметри для своєї реалізації. Якщо все добре, модуль повинен завантажувати, збирати та встановлювати.

Після того, як установка завершена, можливо, ви попросите додати рядок "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 

джерело


це були ті самі кроки, яких я точно виконував (з того самого джерела), як і раніше немає радості: / я перейшов до Ubuntu лише для деяких розширень, які недоступні у Windows, але це так заплутано, бо я в цьому новачок.
maniteja

1
УВАГА! Примітка. Можливо, вам доведеться встановити, makeперш ніж робити це. Просто зробітьsudo apt-get install make
Томанов

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)


Хороший дзвінок; хотілося б, щоб я прочитав вашу відповідь, перш ніж поїхати полювати на лібкре-дев. Я також повинен додати, що в моєму випадку мені потрібно було додати рядок 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.