Ubuntu पर PECL पैकेज स्थापित करें


32

मैंने इसे 100 बार आज़माया है, मैं उबंटू में वास्तव में नया हूँ और त्रुटि का एक गुच्छा के साथ समाप्त हो गया है जो मुझे समझ में नहीं आता है क्या कोई भी मेरी मदद कर सकता है ??

मैंने जो किया था यह रहा:

  1. मैंने PHP स्थापित किया
  2. मैंने libcurl तब php5-dev स्थापित किया
  3. मैंने PECL एक्सटेंशन स्थापित करने का प्रयास किया और यह कहता है कि PHPIZEनहीं मिला।

उबंटू पूछने के लिए आपका स्वागत है। कृपया हमें जारी की गई पूरी कमांड और पूर्ण त्रुटि संदेश दे सकते हैं। कृपया जानकारी जोड़ने के लिए अपने प्रश्न पाठ को संपादित करें।
मादामिक

जवाबों:


48

सबसे पहले, आपको apt-getआवश्यक पैकेज और वितरण प्रणाली प्राप्त करने के लिए PEAR को स्थापित करना होगा जो दोनों PEARका PECLउपयोग करें और उपयोग करें। एक शेल प्रॉम्प्ट से:

sudo apt-get install php-pear

आपको इंस्टॉल की पुष्टि करने के लिए प्रेरित किया जाएगा। बस "y" दबाएं और दर्ज करें। यदि सब ठीक हो जाता है तो आपको इसे डाउनलोड करना चाहिए और php-pear पैकेज को स्थापित करना चाहिए।

अब आपको अतिरिक्त मॉड्यूल संकलित करने के लिए आवश्यक PHP5 स्रोत फ़ाइलों को प्राप्त करने के लिए php5-dev पैकेज को स्थापित करना होगा। शेल प्रॉम्प्ट से निम्नलिखित दर्ज करें:

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

इंस्टॉलर आपसे आपके द्वारा इंस्टॉल किए गए एक्सटेंशन के लिए कुछ विशिष्ट विकल्पों के बारे में पूछ सकता है। जब तक आप अपने कार्यान्वयन के लिए विशिष्ट विकल्प निर्धारित नहीं करना चाहते हैं, तब तक आप सभी डिफॉल्ट्स को स्वीकार करने के लिए बस एक या अधिक बार दर्ज कर सकते हैं। यदि सब ठीक हो जाता है, तो मॉड्यूल को डाउनलोड, निर्माण और स्थापित करना चाहिए।

एक बार इंस्टॉल पूरा हो जाने के बाद, यह संभवत: आपको अपनी php.ini फ़ाइल में "एक्सटेंशन =" लाइन जोड़ने के लिए कहेगा। अपने पसंदीदा टेक्स्ट एडिटर में php.ini फ़ाइल खोलें और "डायनेमिक एक्सटेंशन्स" नामक अनुभाग के तहत लाइन जोड़ें। Ubuntu पर php.ini फ़ाइल / etc / php5 / apache2 फ़ोल्डर में स्थित लगती है:

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

इस उदाहरण में, pecl_http एक्सटेंशन इंस्टॉल ने मुझे "एक्सटेंशन = http.so" जोड़ने के लिए कहा। अब जब php.ini फ़ाइल को अपडेट कर दिया गया है, तो Apache को पुनः आरंभ करने की आवश्यकता होगी ताकि नया एक्सटेंशन लोड हो जाए:

sudo /etc/init.d/apache2 restart 

स्रोत


ये वही कदम थे जिनका मैंने बिल्कुल (उसी स्रोत से) अभी भी कोई आनंद नहीं लिया है: / मैं सिर्फ कुछ एक्सटेंशनों के लिए उबंटू में स्थानांतरित हुआ जो खिड़कियों पर उपलब्ध नहीं हैं, लेकिन यह इतना भ्रमित है क्योंकि मैं इस पर नया हूं।
मैनिटेजा

1
कृपया ध्यान दें: makeऐसा करने से पहले आपको इंस्टॉल करने की आवश्यकता हो सकती है । बस करते हैंsudo apt-get install make
टोमेनो

5
यदि आप PHP7 का उपयोग कर रहे हैं, तो आप php7.0-devइसके बदले पैकेज चाहते हैं :sudo apt-get install php7.0-dev
ग्राहम हंस

4

@ पूछो जवाब के अलावा मुझे भी करने की जरूरत है:

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() यहां अधिक विवरण देखें

पी एस: जब आप कर रहे हैं ( service apache2 restart) को फिर से शुरू करने के लिए मत भूलना


अच्छा निर्णय; काश मैं तुम्हारा जवाब पढ़ता इससे पहले कि मैं libcre-dev के लिए शिकार करने चला गया। मुझे यह भी जोड़ना चाहिए कि मेरे मामले में मुझे पहले से फाइल में शामिल होने के बावजूद लाइन extension=json.soसे पहले जोड़ना था । http.sojson.iniconf.d
M1ke

1

Maythux और cwd के उत्तर के अलावा, आप अपनी php.ini फ़ाइल को संपादित नहीं करना चाह सकते क्योंकि ये परिवर्तन अपडेट पर खो सकते हैं।

डेबियन (और इस प्रकार उबंटू) एपेक मॉड्यूल की तरह ही php मॉड्यूल को हैंडल करता है। पर एक नज़र है /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/

आप (इस मामले में अपाचे) के लिए मॉड को सक्षम / अक्षम करने के लिए सैपी को भी निर्दिष्ट कर सकते हैं:

$ 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

(नोट: मेरा उत्तर १४.०४ पर निर्भर करता है, लेकिन १३.०४ के लिए समान रूप से काम कर सकता है, 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.