2013-10-24 8 views
18

के लिए pecl इंस्टॉल करता है मैंने अपने मैकबुक को मैवरिक्स में अपग्रेड कर दिया है और मेरे विकास पर्यावरण को बर्बाद कर दिया है। मेरे पास अभी समस्या यह है कि मेरा नाशपाती/pecl अभी भी संस्करण 5.4 के बजाय PHP के पिछले (5.3) संस्करण के लिए स्थापित करने का प्रयास करता है।पिछले PHP संस्करण

PHP संस्करण:

$ php -v 
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) 
Copyright (c) 1997-2013 The PHP Group 
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies 
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans 

नाशपाती

$ pear version 
PEAR Version: 1.9.4 
PHP Version: 5.4.17 
Zend Engine Version: 2.4.0 
Running on: Darwin MBP-retina.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64 

अगर मैं

$ sudo pecl install apc 
downloading APC-3.1.13.tgz ... 
Starting to download APC-3.1.13.tgz (171,591 bytes) 
.....................................done: 171,591 bytes 
55 source files, building 
running: phpize 
Configuring for: 
PHP Api Version:   20090626 
Zend Module Api No:  20090626 
Zend Extension Api No: 220090626 
... 
Build process completed successfully 
Installing '/usr/local/Cellar/php53/5.3.26/include/php/ext/apc/apc_serializer.h' 
Installing '/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626/apc.so' 
install ok: channel://pecl.php.net/APC-3.1.13 
Extension apc enabled in php.ini 

साथ APC स्थापित और यह करने के लिए अपने php.ini php -v परिवर्तन में एपीसी मॉड्यूल सक्षम :

$ php -v 
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so, 9): image not found in Unknown on line 0 
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) 
Copyright (c) 1997-2013 The PHP Group 
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies 
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans 

तो pecl /usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626 में मेरा एपीसी एक्सटेंशन इंस्टॉल करता है और PHP को /usr/lib/php/extensions/no-debug-non-zts-20100525/ में इसकी अपेक्षा करता है।

$ php -v 
PHP Warning: PHP Startup: apc: Unable to initialize module 
Module compiled with module API=20090626 
PHP compiled with module API=20100525 
These options need to match 
in Unknown on line 0 
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) 
Copyright (c) 1997-2013 The PHP Group 
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies 
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans 

तो है कि एक समाधान नहीं है:

बस एक सिमलिंक बनाने निम्न त्रुटि देता है।

क्या कोई मुझे सही दिशा में इंगित कर सकता है? मेरे पास वास्तव में कोई संकेत नहीं है कि यहां क्या हो रहा है।

उत्तर

20

समाधान बहुत आसान था। मुझे अपने pecl कॉन्फ़िगरेशन में संशोधन करना पड़ा। यह पता चला है कि इन दो आदेश चाल किया:

sudo pear config-set php_ini /etc/php.ini 
sudo pecl config-set bin_dir /usr/bin/ 

PECL गलत phpize इस्तेमाल किया। Phpize के दो संस्करण थे। मेरी php.ini फ़ाइल के लिए वही मायने रखता है।

+2

हे भगवान, धन्यवाद। मैं 12 घंटे के लिए इस मुद्दे से लड़ रहा हूं और यह पता नहीं लगा सकता कि पीएचएल 5.5 5.5 के लिए क्यों नहीं बनाया जाएगा। उन दो आदेशों को चलाने से इसे ठीक किया गया। आपने सचमुच मेरे गधे को बचाया। – atxpunkrock

27

मेरे मामले में, मैं गियरमैन स्थापित करने का प्रयास कर रहा था।

pecl इंस्टॉल गियरमैन इसे गलत तरीके से स्थापित करेगा।

php -i आएगा:

PHP Extension => 20100525 

फिर भी PECL का उपयोग कर स्थापित होगा:

PHP Api Version:   20090626 

मेरी config सेटिंग्स बदलने के बाद उपयोग करने के लिए:

पहले फिक्स

sudo pecl config-set php_ini /etc/php.ini 
sudo pecl config-set php_bin /usr/bin/php5 

मैंने देखा है कि मैं अभी भी

WARNING: php_bin /usr/bin/php5 appears to have a suffix 5, but config variable php_suffix does not match

आप config सेटिंग का उपयोग करके इस हल कर सकते हैं मिलेगा:

अतिरिक्त फिक्स

sudo pear config-set php_suffix 5 

क्यों यह एक समस्या थी ?

मेरे लिए, मैं इस समस्या में मिल गया, क्योंकि मैं एक कस्टम पीपीए जोड़ा गया है और पीएचपी पुनर्स्थापित। इसका मतलब था कि php5-dev का मेरा पिछला इंस्टॉल सिंक से बाहर था।

.. तुम अगर तुम कभी एक ही स्थिति में हो, तो आप को चलाने के लिए चाहते हो सकता है सिर्फ

apt-get remove php5-dev 
pecl uninstall <extensionname> 
apt-get install php5-dev 
apt-get remove php5-pear 
apt-get install php5-pear 
pecl install <extensionname> 

वैकल्पिक रूप से, आप स्रोत डाउनलोड करने और phpize चला सकते हैं।

+1

धन्यवाद - php5-dev को हटाने और पुनः स्थापित करने के लिए मेरे लिए चाल है। ओह। –

+0

इस उत्तर ने मुझे थोड़ा अलग समस्या हल करने में बहुत मदद की –

+0

मुझे मैक प्रचार नहीं मिला है। आप बस एक फ़ाइल क्यों डाउनलोड नहीं कर सकते हैं और इसे वहां प्लॉप कर सकते हैं ?? –

3

बेहतर phpize एक्सटेंशन को पुनर्स्थापित करने के रूप में यह PECL द्वारा उपयोग किया जाएगा और हैक्स नहीं।

क्या अगले (php 5.5 => php 5.6 उदाहरण):

sudo apt-get remove php5-dev 
sudo apt-get install php5.6-dev 

(आप बदल सकते हैं 5.6 संस्करण के लिए आप की जरूरत)

तब: अन्य की

sudo pecl install extensionname 
+0

यह वास्तव में कॉन्फ़िगरेशन को गड़बड़ करने के बजाय इसे ठीक करने का सही तरीका है जो अक्सर अधिक समस्याओं का कारण नहीं बनता है। – Vincent

2

कोई नहीं उत्तर (अभी तक) सभी स्थापित PHP संस्करणों के लिए दिए गए एक्सटेंशन को बनाने के दौरान कई "सह-इंस्टॉल करने योग्य" PHP संस्करणों को संबोधित करने के लिए प्रतीत होता है।

परिदृश्य, जिसमें मैं अपने आप को लगता है (मैं उबंटू 16.04 LTS के लिए ओंद्रेज Sury पीएचपी PPAs उपयोग कर रहा हूँ) इसे समझने के लिए:

[email protected]:~# ls -lah /usr/bin/*php* 
-rwxr-xr-x 1 root root  11K Apr 19 12:50 dh_php 
-rwxr-xr-x 1 root root 3.1K Apr 5 2016 dh_phpcomposer 
-rwxr-xr-x 1 root root 5.4K Apr 5 2016 dh_phppear 
lrwxrwxrwx 1 root root  21 Jul 24 00:44 php -> /etc/alternatives/php 
-rwxr-xr-x 1 root root 4.3M Jul 6 10:04 php5.6 
-rwxr-xr-x 1 root root 4.3M Jul 6 10:04 php7.0 
-rwxr-xr-x 1 root root 4.4M Aug 4 14:22 php7.1 
lrwxrwxrwx 1 root root  28 Jul 24 00:44 php-config -> /etc/alternatives/php-config 
-rwxr-xr-x 1 root root 4.3K Jul 6 10:03 php-config5.6 
-rwxr-xr-x 1 root root 4.1K Jul 6 10:03 php-config7.0 
-rwxr-xr-x 1 root root 4.1K Aug 4 14:21 php-config7.1 
lrwxrwxrwx 1 root root  24 Jul 24 00:44 phpize -> /etc/alternatives/phpize 
-rwxr-xr-x 1 root root 4.7K Jul 6 10:03 phpize5.6 
-rwxr-xr-x 1 root root 4.6K Jul 6 10:03 phpize7.0 
-rwxr-xr-x 1 root root 4.6K Aug 4 14:21 phpize7.1 

pecl install extension-name पीएचपी 7.1 के लिए काम करता है, लेकिन दूसरों।

अन्य anwsers इंगित करते हैं कि php*-dev को अनइंस्टॉल/पुनर्स्थापित करना संभव है, लेकिन सिस्टम पर जानबूझकर, सह-स्थापित PHP संस्करणों को देखते हुए मुझे बहुत कुछ नहीं चाहिए।

एक समाधान सिस्टम पर प्रत्येक संस्करण वर्तमान विस्तार निर्माण करना है।

यह स्निपेट PHP 5.6 के साथ इमारत का प्रदर्शन करता है, लेकिन मैंने 7.0 और 7.1 के लिए ऐसा किया है और चरण समान हैं।

यह उदाहरण एक Git रिपोजिटरी से विस्तार क्लोनिंग दर्शाता है, लेकिन एक किसी भी स्रोत निर्देशिका का उपयोग कर सकते हैं।

(# इंगित करता है कि आप रूट होना चाहिए या sudo का उपयोग)

# apt-get install php-dev 

# cd ~ 

# git clone https://github.com/vendor/extension-name 

# cd ./extension-name 

# phpize5.6 

# ./configure --with-php-config=/usr/bin/php-config5.6 

# make clean 

# make 

# make install 

# ln -s /etc/php/5.6/mods-available/extension-name.ini /etc/php/5.6/fpm/conf.d/20-extension-name.ini 

# service php5.6-fpm reload 
संबंधित मुद्दे