ติดตั้งแพคเกจ PECL บน Ubuntu


32

ฉันเคยลองมาแล้ว 100 ครั้งฉันใหม่กับ Ubuntu และจบลงด้วยข้อผิดพลาดมากมายที่ฉันไม่เข้าใจแม้แต่คนเดียวสามารถช่วยฉันได้มั้ย ??

นี่คือสิ่งที่ฉันทำ:

  1. ฉันติดตั้ง PHP
  2. ฉันติดตั้ง libcurl แล้ว php5-dev
  3. ฉันลองติดตั้งส่วนขยาย PECL และPHPIZEไม่พบข้อความ

ยินดีต้อนรับสู่ถาม Ubuntu ได้โปรดให้คำสั่งแบบเต็มกับคุณที่คุณออกและข้อผิดพลาดแบบเต็ม แก้ไขข้อความคำถามของคุณเพื่อเพิ่มข้อมูลโปรด
MadMike

คำตอบ:


48

ก่อนอื่นคุณจะต้องติดตั้งลูกแพร์ผ่านapt-getเพื่อรับแพ็คเกจและระบบการกระจายที่จำเป็นซึ่งทั้งสองPEARและPECLใช้งาน จาก shell prompt ให้ป้อน:

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

โปรแกรมติดตั้งอาจถามคุณเกี่ยวกับตัวเลือกเฉพาะบางอย่างสำหรับส่วนขยายที่คุณกำลังติดตั้ง คุณอาจกด 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
Tomanow

5
หากคุณใช้ PHP7 คุณจะต้องใช้php7.0-devแพ็คเกจแทน:sudo apt-get install php7.0-dev
Graham Swan

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
…

หากต้องการเปิด / ปิดการใช้งาน mods ที่มีอยู่เหล่านี้สำหรับ APIs ทั้งหมด (apache, cli, cgi) คุณสามารถใช้คำสั่งphp5enmodหรือphp5dismodดังนี้:

$ sudo php5enmod curl

ตามลำดับ

$ sudo php5dismod curl

เหล่านี้จะสร้าง (หรือลบ) การเชื่อมโยงสัญลักษณ์เพื่อไฟล์ config โมดูลในและapache2/conf.d/cli/conf.d/

คุณยังสามารถระบุ sapi เพื่อเปิด / ปิดการใช้งาน mod สำหรับ (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

ตอนนี้วันติดตั้งลูกแพร์ด้วยวิธีนี้เพื่อรับจากแหล่งที่มา:

wget http://pear.php.net/go-pear.phar
php go-pear.phar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.