Cài đặt các gói PECL trên Ubuntu


32

Tôi đã dùng thử 100 lần tôi thực sự mới với Ubuntu và đã kết thúc với một loạt lỗi mà tôi thậm chí không hiểu ai có thể giúp tôi được không ??

Đây là những gì tôi đã làm:

  1. Tôi đã cài đặt PHP
  2. Tôi đã cài đặt libcurl rồi php5-dev
  3. Tôi đã thử cài đặt phần mở rộng PECL và nó nói PHPIZEkhông tìm thấy.

Chào mừng bạn đến hỏi Ubuntu. Xin vui lòng cho chúng tôi toàn bộ lệnh bạn đã ban hành và thông báo lỗi đầy đủ. Chỉnh sửa văn bản câu hỏi của bạn để thêm thông tin xin vui lòng.
MadMike

Câu trả lời:


48

Trước tiên, bạn sẽ cần cài đặt PEAR thông qua apt-getđể có được gói và hệ thống phân phối cần thiết mà cả hai PEARPECLsử dụng. Từ dấu nhắc shell, nhập:

sudo apt-get install php-pear

Bạn sẽ được nhắc xác nhận cài đặt. Chỉ cần nhấn vào y lòng và nhập. Nếu mọi việc suôn sẻ, bạn sẽ thấy nó tải xuống và cài đặt gói php-lê.

Bây giờ bạn sẽ cần cài đặt gói php5-dev để có được các tệp nguồn PHP5 cần thiết để biên dịch các mô-đun bổ sung. Nhập thông tin sau từ dấu nhắc shell:

sudo apt-get install php5-dev

Nếu bạn không cài đặt gói php5-dev và thử cài đặt tiện ích mở rộng PECL bằng cách sử dụng cài đặt lê lê lê, bạn sẽ gặp phải lỗi sau:

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

Tiện ích mở rộng PECL_HTTP yêu cầu gói phụ thuộc bổ sung được cài đặt. Bạn có thể bỏ qua phần này cho các tiện ích mở rộng khác:

sudo apt-get install libcurl3-openssl-dev

Bây giờ chúng tôi cuối cùng đã sẵn sàng để thực sự cài đặt phần mở rộng. Từ một dấu nhắc shell, hãy nhập theo sau nhưng thay thế pecl_http trực tiếp bằng tên mở rộng PECL mà bạn đang cài đặt:

sudo pecl install pecl_http

Trình cài đặt có thể hỏi bạn về một số tùy chọn cụ thể cho tiện ích mở rộng bạn đang cài đặt. Bạn có thể chỉ cần nhấn enter một hoặc nhiều lần để chấp nhận tất cả các mặc định trừ khi bạn muốn đặt các tùy chọn cụ thể cho việc triển khai của mình. Nếu mọi việc suôn sẻ, mô-đun nên tải xuống, xây dựng và cài đặt.

Sau khi quá trình cài đặt hoàn tất, nó có thể sẽ yêu cầu bạn thêm một dòng mở rộng = dòng vào tập tin php.ini. Mở tệp php.ini trong trình soạn thảo văn bản yêu thích của bạn và thêm dòng dưới phần có nhãn là Phần mở rộng động Dynamic. Trên Ubuntu, tệp php.ini dường như nằm trong thư mục / etc / php5 / apache2:

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

Trong ví dụ này, cài đặt tiện ích mở rộng pecl_http đã yêu cầu tôi thêm tiện ích mở rộng trên nền tảng = http.so. Bây giờ tệp php.ini đã được cập nhật, Apache sẽ cần phải được khởi động lại để tiện ích mở rộng mới sẽ được tải:

sudo /etc/init.d/apache2 restart 

nguồn


Đây là những bước tương tự tôi đã thực hiện chính xác (từ cùng một nguồn) vẫn không có gì vui: / tôi đã chuyển sang Ubuntu chỉ vì một số tiện ích mở rộng không có sẵn trên windows nhưng điều này rất khó hiểu vì tôi mới biết điều này.
maniteja

1
XIN LƯU Ý: Bạn có thể cần phải cài đặt maketrước khi làm điều này. Đơn giản chỉ cần làmsudo apt-get install make
Tomanow

5
Nếu bạn đang sử dụng PHP7, bạn sẽ muốn php7.0-devgói thay thế:sudo apt-get install php7.0-dev
Graham Swan

4

Ngoài câu trả lời của @ Ask, tôi cũng cần phải làm:

sudo apt-get install libpcre3-dev

trước khi chạy pecl install pecl_httpvì tôi đã nhận được lỗi này về pcre.h:

lỗi nghiêm trọng: pcre.h: Không có quá trình biên dịch tệp hoặc thư mục như vậy bị chấm dứt.

Ngoài ra, thay vì chỉnh sửa php.initệp, tôi đã tạo một tệp mới được gọi pecl-http.initrong conf.dthư mục con của php.initệp đó, (trên ubfox /etc/php5/apache2/conf.d)

Và tôi cần thêm vào ba dòng:

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

Cuối cùng, vì phiên bản đã cài đặt này, 2.0.6tôi không thể sử dụng http_get_request_headerschức năng mà thay vào đó cần sử dụng phiên bản được đặt tên, \http\Env::getRequestHeader() xem thêm chi tiết tại đây

ps: đừng quên khởi động lại apache khi bạn hoàn thành ( service apache2 restart)


Cuộc gọi tốt; ước gì tôi đã đọc câu trả lời của bạn trước khi tôi đi săn libcre-dev. Tôi cũng nên thêm rằng trong tôi trường hợp tôi cần thêm extension=json.sotrước khi http.sodòng mặc dù đã có các json.initập tin có trong conf.d.
M1ke

1

Ngoài các câu trả lời của Maythux và cwd, bạn có thể không muốn chỉnh sửa tệp php.ini của mình vì những thay đổi này có thể bị mất khi cập nhật.

Debian (và do đó Ubuntu) xử lý các mô-đun php theo cách tương tự như các mô-đun apache. Hãy nhìn vào /etc/php5, bạn sẽ tìm thấy các thư mục như thế này:

apache2/
cli/
mods-available/

Khi bạn nhìn vào mods-availablebạn thấy một số tệp như:

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

Để bật / tắt các mod có sẵn này cho tất cả các API (apache, cli, cgi), bạn chỉ cần sử dụng các lệnh php5enmodhoặc php5dismodtương tự như vậy:

$ sudo php5enmod curl

tương ứng

$ sudo php5dismod curl

Chúng sẽ tạo (hoặc xóa) các liên kết tượng trưng đến tệp cấu hình mô-đun trong apache2/conf.d/cli/conf.d/.

Bạn cũng có thể chỉ định sapi để bật / tắt mod cho (apache trong trường hợp này):

$ sudo php5enmod -s apache2

pecl installcó thể không tạo tệp cấu hình cho raphf(và các mô-đun khác được cài đặt cùng với nó) nhưng bạn có thể tự tạo tệp đó:

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

Sau đó viết vào các dòng sau:

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

Mức ưu tiên mặc định là 20. Nó có thể phụ thuộc vào loại mô-đun mà mức độ ưu tiên bạn phải sử dụng. Đối với raphf20 có vẻ tốt. ( Cập nhật : nếu bạn đang tìm kiếm pecl_http, kể từ phiên bản 2, nó phải được tải sau rapfhpropro, vì vậy hãy đặt mức độ ưu tiên trong mods-available/http.inithành 30.)

Với điều đó bạn có thể kích hoạt mô-đun:

$ sudo php5enmod raphf

(Lưu ý: câu trả lời của tôi phụ thuộc vào Ubuntu 14.04 nhưng có thể hoạt động theo cách tương tự cho 13.04, xem http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ub Ubuntu )


1

Ngày nay, hãy cài đặt PEAR theo cách này, để lấy nó từ nguồn:

wget http://pear.php.net/go-pear.phar
php go-pear.phar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.