phpinfo () और php -v PHP के विभिन्न संस्करण को दर्शाता है


20

मैं जानना चाहता था कि phpमैं किस संस्करण का उपयोग कर रहा हूं इसलिए मैंने मानक स्क्रिप्ट लिखी है:

phpinfo();

जो मुझे देता है

PHP version 5.6.10

सही PHP संस्करण अपने आवेदन के लिए की जरूरत है। जब मैंने टर्मिनल में कोशिश की:

php -i

या

php -v

यह मुझे दिखाता है:

PHP version 5.3.2

जिसकी मुझे जरूरत नहीं है। फिर मैंने कोशिश की:

which php

यह मुझे दिखाता है:

/usr/bin/php

अब मैं उलझन में हूँ कि PHP का कौन सा संस्करण उपयोग कर रहा हूँ। फ़ाइलों को होस्टिंग वेबसाइट पर अपलोड किया जाता है और मैं इस तरह httpd.confया तो कॉन्फ़िगर फ़ाइलों में कोई बदलाव नहीं कर सकता php.ini

जवाबों:


22

छोटा जवाब।

घबराओ मत! यदि आप इस बात से चिंतित हैं कि आपका अपाचे सर्वर किस PHP संस्करण का उपयोग कर रहा है, तो आउटपुट phpinfo()हमेशा वह होता है जिस पर आपको ध्यान देना चाहिए। Apache PHP मॉड्यूल और PHP कमांड लाइन बाइनरी दो अलग-अलग चीजें हैं जो एक दूसरे के साथ हस्तक्षेप नहीं करती हैं।

वास्तव में आप विभिन्न पीएचपी संस्करणों को संकलित और लोड कर सकते हैं जिन्हें आप अपाचे के साथ काम करना चाहते हैं जब तक आप इसे ठीक से लोड करने के लिए अपाचे को समायोजित करते हैं। PHP कमांड लाइन इंटरफ़ेस कभी भी अपाचे पार्सिंग PHP पृष्ठों के मामले में नहीं आएगा।

PHP का कमांड लाइन संस्करण केवल कमांड लाइन के विशिष्ट कार्यों के लिए है और Apache के लिए PHP मॉड्यूल कभी भी स्पर्श, उपयोग या आवश्यकता नहीं करेगा।

लंबा जवाब।

आप यह कहते हैं:

मैं जानना चाहता था कि phpमैं किस संस्करण का उपयोग कर रहा हूं इसलिए मैंने मानक स्क्रिप्ट लिखी है:

phpinfo();

जो मुझे PHP संस्करण 5.6.10 देता है - मेरे आवेदन के लिए आवश्यक सही PHP संस्करण। जब मैंने टर्मिनल में कोशिश की:

php -i or php -v   

यह मुझे PHP संस्करण 5.3.2 दिखाता है जिसकी मुझे आवश्यकता नहीं है।

कमांड लाइन से उपलब्ध PHP के संस्करण में मॉड्यूल के रूप में लोड किए गए PHP के संस्करण के साथ 100% कुछ भी नहीं है। ये पूरी तरह से अलग चीजें हैं।

इसलिए यदि आप इस बात से चिंतित हैं कि PHP का कौन सा संस्करण आपके वेब एप्लिकेशन का उपयोग कर रहा है, यदि phpinfo()संस्करण 5.6.10 दिखाता है और वही है जो आप चाहते हैं / 100% ठीक है।

PHP का कमांड लाइन संस्करण पूरी तरह से अलग सिस्टम आइटम है। तो केवल एक चीज जो मायने रखती है वह है आउटपुट phpinfo()

यदि किसी कारण से आप अपाचे के साथ PHP के एक अलग संस्करण का उपयोग करना चाहते थे, तो आपको बस इतना करना होगा कि अपाचे PHP मॉड्यूल को कहीं और स्थापित किया जाए और आपके सिस्टम के Apache config में इस पंक्ति को एडजस्ट या एडजस्ट किया जाए:

LoadModule php5_module    /path/to/php/and/the/module/for/apache2/libphp5.so

और बस मार्ग को समायोजित करें- libphp5.soजो अपाचे PHP को पार्स करने के लिए उपयोग करता है - फिर अपाचे को पुनरारंभ करें और आप व्यवसाय में हैं।

उदाहरण के लिए, एक बिंदु पर मुझे PHP 5.35 पर चलने वाली उबंटू 12.04 मशीन पर उपयोग के लिए PHP संस्करण 5.1.6 को स्रोत से (जीडी लाइब्रेरी समर्थन के साथ) संकलित करना पड़ा। सर्वर के PHP मॉड्यूल लोडिंग फ़ाइल में यहां:

/etc/apache2/mods-available/php5.load

मेरे पास इस तरह की लाइनें थीं:

# LoadModule php5_module        /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module        /usr/lib/apache2/modules/libphp516-gd.so

ध्यान दें कि कैसे एक लाइन के लिए टिप्पणी की जाती है libphp535.soऔर दूसरे के लिए libphp516-gd.soएक असंबद्ध है? मैंने जो भी किया है उसका नाम डिफ़ॉल्ट PHP 5.3.5 libphp5.soअपाचे मॉड्यूल का libphp535.soनाम में संस्करण संख्या के साथ रखा गया है ताकि मैं इसे संदर्भ के लिए वहां रख सकूं और फिर PHP 5.1.6 (जीडी लाइब्रेरी समर्थन के साथ) मॉड्यूल का नाम दिया libphp516-gd.soताकि मुझे पता चले कि क्या है साथ ही है। इस तरह मेरे पास सिस्टम पर साइड-बाय-साइड दोनों उपलब्ध हैं।

और जैसा कि मैंने शुरू में ही कहा था- कमांड लाइन में उपयोग किए जाने वाले PHP संस्करण का अपाचे PHP मॉड्यूल से कोई लेना-देना नहीं है। तो आपके पास अपाचे PHP मॉड्यूल के विभिन्न संस्करणों की संख्या हो सकती है जो सिस्टम पर जाने के लिए तैयार है; बस एक विन्यास को समायोजित करें और अपाचे को पुनरारंभ करें और आप जो भी अपाचे का उपयोग करना चाहिए PHP संस्करण का उपयोग करने के लिए व्यापार में होना चाहिए।


26

यदि अपाचे के साथ Ubuntu 14.04 पर PHP5 से PHP7 में अपग्रेड करते समय आपको यह समस्या है, तो यहां मुझे क्या मदद मिली (क्रेडिट यहां आता है ):

अपाचे पर PHP5 मॉड्यूल को अक्षम करें:

sudo a2dismod php5

अब PHP7 को सक्षम करें:

sudo a2enmod php7.1

परिवर्तनों को प्रतिबिंबित करने के लिए अपाचे पुनरारंभ की आवश्यकता है:

sudo systemctl restart apache2

यह प्रोजेक्ट क्रैश हो सकता है अगर php.ini अलग हो
KawaiKx

यह भी सुनिश्चित करें कि नए संस्करण के लिए php लाइब्रेरी स्थापित हैं, मेरा मतलब है gd, mcrypt, xml आदि
korwalskiy

2

यदि आप अपने वेब सर्वर से PHP कोड चलाने की कोशिश कर रहे हैं, तो आप जिस संस्करण का उपयोग कर रहे हैं, वह phpinfo()= 5.6.10 द्वारा रिपोर्ट किया गया है ।

आपके सर्वर में जाहिरा तौर पर PHP के कई संस्करण स्थापित हैं, और जब आप लॉगिन करते हैं और phpकमांड लाइन पर चलते हैं, तो आपको पुराने संस्करण मिल रहे हैं जो / usr / bin / php पर स्थापित है।

एक सर्वर में PHP के कई संस्करण हो सकते हैं, और आपका लगता है।

यदि आपको अपने वेब सर्वर के रूप में उसी PHP को मैन्युअल रूप से निष्पादित करने की आवश्यकता है, तो आपको दूसरे संस्करण को खोजने की आवश्यकता है। इन आदेशों को चलाने का प्रयास करें:

/usr/local/bin/php -v
/opt/local/bin/php -v
/opt/bin/php -v

उनमें से एक अपने वेब सर्वर के रूप में एक ही संस्करण के साथ एक PHP प्रकट कर सकता है, और जब आप यह पता लगा लेते हैं कि यह कौन सा है, तो आप डिफ़ॉल्ट के बजाय उस एक का उपयोग कर सकते हैं।


0

अगर मैं अपने 2 सेंट जोड़ सकता हूँ ...

मैं अपने Nextcloud संस्करण को अपग्रेड कर रहा था। जब मैं अपग्रेड प्रक्रिया को चलाता हूं, तो मुझे अपाचे उपयोगकर्ता के रूप में "sudo php" करना होगा, लेकिन इसने चलाने से इनकार कर दिया क्योंकि एपाचे उपयोगकर्ता द्वारा डिफ़ॉल्ट रूप से चलाया गया php CLI संस्करण बहुत पुराना था। हालाँकि, phpinfo (); मेरे सर्वर पर स्थापित नवीनतम php संस्करण प्रदर्शित किया।

मुझे एहसास हुआ कि यह इसलिए है क्योंकि /home/apache/.bashrc फ़ाइल में PATH चर को php के पहले संस्करण पर सेट किया गया था जिसे मैंने अपने सर्वर पर स्थापित किया था , और इसे फिर से अपडेट नहीं किया गया था (मैं हमेशा Github के लिए php को संकलित / स्थापित करता / करती हूं) )

समाधान:

जब आप अपने वेब सर्वर पर php अपडेट करते हैं और यह सुनिश्चित करना चाहते हैं कि उपयोग किया जाने वाला CLI php संस्करण सबसे अधिक चालू है जब आप Apache उपयोगकर्ता के रूप में sudo करते हैं, तो इसे इस उपयोगकर्ता की .bashrc फ़ाइल में इस तरह बदलना न भूलें:

PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH


-1

इसे ठीक करने के लिए कदम। सबसे पहले जो पीएचपी संस्करण आपको दिखा रहा है।

php -v

अब आपको PHP पथ की आवश्यकता होगी, यदि आप नहीं जानते हैं तो आप PHP पथ के लिए अपने होस्टिंग समर्थन से संपर्क कर सकते हैं। मेरे मामले में यह था

/opt/php71/bin/php

अब, टर्मिनल में इस कमांड को चलाने का समय आ गया है।

alias php='/opt/php71/bin/php'

यह आपके PHP संस्करण को PHP 7.1 में बदल देगा। यदि आप इसे 7.2 में बदलना चाहते हैं तो आप कोशिश कर सकते हैं

alias php='/opt/php72/bin/php'

आप कर चुके हैं। इसके साथ सत्यापित करें

php -v

-3

Php के नवीनतम संस्करण के लिए एक पर्यावरण चर पथ बनाएं। पूर्व: C: \ wamp64 \ bin \ php \ php7.2.4। अब अपने पिछले php संस्करण फ़ोल्डर को .php5.6.35 को किसी अन्य संख्या php5.6.354 पर बदलें। इसके बाद php -v को अपने wamp करें। सर्वर और cli php समान होंगे

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.