2009-12-15 13 views
5

क्या एक ही बॉक्स (जैसे रेल) ​​पर चल रहे PHP के कई संस्करण हो सकते हैं। यहां मेरी समस्या है, मुझे एक नई परियोजना पर विकास शुरू करने की आवश्यकता है और इसके लिए PHP 5.3 का उपयोग करने की योजना बना रहा था ताकि मैं नवीनतम ज़ेंड फ्रेमवर्क और इसके साथ सक्रिय रिकॉर्ड का उपयोग कर सकूं।
हालांकि मशीन जहां मुझे अपने एप्लिकेशन को होस्ट करने की आवश्यकता है, वहां PHP 4.4 है और वहां कई अन्य एप्लिकेशन होस्ट किए गए हैं। मैं सर्वर पर PHP संस्करण को अपग्रेड नहीं करना चाहता क्योंकि अतीत में मैंने PHP संस्करण को अपग्रेड करते समय बहुत से मुद्दों का सामना किया है और बहिष्कृत कार्यों को अपग्रेड किया है।
अगर यह एक ही बॉक्स पर PHP के कई संस्करण है करने के लिए और उसके बाद किसी भी तरह संस्करण है कि आप अपने आवेदन लोड करना चाहते हैं (रेल के समान)एक ही बॉक्स पर एकाधिक PHP संस्करण

+0

ऐसा लगता है कि यह सर्वर गलती के लिए एक प्रश्न है ... – Myles

उत्तर

4

हाँ निर्दिष्ट संभव है मैं सोच रहा था, यह संभव है। वास्तव में, कई सर्वर इस तरह से काम करते हैं। आप समय-समय पर .php4 और .php5 एक्सटेंशन देख सकते हैं जो दर्शाते हैं कि कौन सा संस्करण विशेष स्क्रिप्ट को संभाला जाना चाहिए।

ServerFault इस सवाल

Running php4 and php5 along side each other

0

एक possiblity एक अपाचे मॉड्यूल के रूप में पीएचपी में से एक संस्करण का उपयोग कर रहा है, और एक CGI के रूप में अन्य संस्करण संबोधित; लेकिन एक विचार मैं एक तरह से बेहतर है की तरह है:

  • अपाचे के कई अलग उदाहरणों,
  • एक अलग बंदरगाह (उदाहरण के लिए, पीएचपी 4.4 पोर्ट 44000 पर पर हर एक को सुनने की सुविधा और पीएचपी 5.3.1 पोर्ट 53100)
  • और वह एक दूसरे के स्वतंत्र रूप से काम करता है हर एक पीएचपी का एक अलग संस्करण का उपयोग कर

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

(और यदि आप अपने URL में पोर्ट संख्या है नहीं करना चाहती, मैं तुम्हें अपने विशिष्ट अपाचे उदाहरणों के सामने एक प्रॉक्सी रख सकते हैं लगता है, तो ऐसा लगता है वहाँ केवल एक)

3

आप डॉकर का उपयोग कर एक ही बॉक्स पर एकाधिक PHP संस्करण चला सकते हैं।

एक उदाहरण कमांड यह होगी:

sudo docker run -d -p 8055:80 -v /var/www:/var/www \ 
    -v /etc/apache2/sites-available:/etc/apache2/sites-available \ 
    -v /etc/apache2/sites-enabled:/etc/apache2/sites-enabled \ 
    codeyourdream/apache-sendmail-php55 

यहाँ इस आदेश करता है:

  • यह अग्रेषित करता है अपने स्थानीय /var/www, /etc/apache2/sites-available और डोकर कंटेनर के लिए इसी फ़ोल्डरों को /etc/apache2/sites-enabled। यदि आपकी स्थानीय वेबसाइटें और/या अपाचे कॉन्फ़िगर अलग-अलग फ़ोल्डरों में स्थित हैं, तो -v मान के पहले भाग को प्रतिस्थापित करें। आईई। प्रारूप है: docker run -v /host/directory:/container/directory -other -options image_name command_to_run
  • यह डोकर कंटेनर के पोर्ट 80 के लिए अपने स्थानीय मशीन के बंदरगाह 8055 अग्रेषित करता
  • यह से "codeyourdream/अपाचे-sendmail-php55" छवि

यदि आप चलाने के कंटेनर चलाता है यह आदेश, आपकी सभी स्थानीय वेबसाइटों को पोर्ट 8055 (यानी http://localsite:8055 जैसे यूआरएल के माध्यम से) के माध्यम से उपलब्ध होना चाहिए और PHP 5 द्वारा संसाधित किया जाना चाहिए।5

अधिक जानकारी के लिए https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker देखें। संबद्धता नोट: यह मेरी टीम का ब्लॉग है।