2011-08-24 12 views
39

मुझे अलग-अलग वातावरण बनाने के लिए पायथन के वर्चुअलनेव टूल का उपयोग करने के लिए उपयोग किया जाता है जो मैं लिखने वाली परियोजनाओं के लिए तैनाती वातावरण की नकल कर सकता हूं।क्या php के पास पाइथन के वर्चुअलनेव या रूबी के सैंडबॉक्स के बराबर है?

अब, मैं एक php प्रोजेक्ट पर काम करने जा रहा हूं और मैं सोच रहा हूं कि उसके समकक्ष कोई समकक्ष है या नहीं? विशेष रूप से मैं उम्मीद करता हूं कि PHP के एक (पुराने) संस्करण के साथ अपाचे पर एक वर्चुअलहोस्ट चलाने में सक्षम होने की उम्मीद है, जबकि बाकी सब कुछ सामान्य अप टू डेट संस्करण पर चलता है।

मेरी विकास मशीन उबंटू 11.04 चल रही है, इसलिए उस प्लेटफॉर्म पर काम करने वाले समाधानों को प्राथमिकता दी जाएगी।

+0

क्यों आप इसे की तरह कुछ करना चाहते हैं?आप देखते हैं, PHP को पिछड़ा-संगत बनाया गया है। विभिन्न 5.x संस्करणों के बीच भी, शायद ही कभी अंतर होते हैं जो परेशान होंगे, और यदि ऐसा होता है, तो उन्हें आमतौर पर ठीक करना आसान होता है। उदाहरण के लिए PHP 5.3 और 5.2 के बीच कई बदलाव नहीं हुए हैं (http://pl2.php.net/manual/en/migration53.incompatible.php) - केवल दो नए कीवर्ड और कुछ अमान्य कोड अब काम नहीं कर रहे हैं ... – xfix

+6

@GlitchMr मैं एक विकास सर्वर पर एक तैनाती पर्यावरण को बिल्कुल दोहराने की कोशिश कर रहा हूं ताकि जब मैं तैनात करता हूं तो कोई आश्चर्य नहीं होता है, लेकिन मैं प्रत्येक तैनाती पर्यावरण के लिए एक पूरी नई आभासी मशीन स्थापित नहीं करना चाहता हूं। अगर मैं अपाचे में अलग वर्चुअलहोस्ट कर सकता हूं तो PHP के विभिन्न संस्करणों का उपयोग करें, मैं इसे पूरा करने के लिए एक लंबा सफर तय करूंगा। – Zxaos

+0

डॉकर आपका समाधान है। एक और समाधान के लिए Vagrant। – JREAM

उत्तर

10

मान लें कि आप mod_php का उपयोग कर रहे हैं, उसी अपाचे उदाहरण में कई अलग-अलग संस्करणों को लोड करने का कोई तरीका नहीं है। यदि आप सीजीआई या फास्टसीजीआई के रूप में PHP चला रहे हैं, तो आप कई अलग-अलग संस्करण चला सकते हैं, लेकिन यह mod_php से व्यवहार में कुछ अंतर पेश करेगा।

2

(वर्षों में php कोडित नहीं है, तो यह पुराना हो सकता है)

जहाँ तक मुझे याद है, जैसा कि आप बस की तरह कुछ का उपयोग कर किसी अन्य निर्देशिका जहाँ आपके पुस्तकालयों रहते हैं (पथ शामिल हैं) को इंगित करने के लिए किया था,:

include_path = .:/usr/local/lib/php:./include (this goes in php.ini, default libararies) 

और अपने php फाइलों में:

ini_set("include_path", ".:../:./include:../include"); 

पीएचपी वास्तव में कभी नहीं एक मजबूत पैकेजिंग प्रणाली और perl/अजगर/रूबी की तरह पुस्तकालय भंडार पड़ा है, नाशपाती मो करने के लिए कोशिश कर रहा था उस दिशा में है लेकिन यह तुलना में बहुत बंद है और multiproject वातावरण में कॉन्फ़िगर करना मुश्किल था।

फ़ैर्क PHP, https://github.com/lox/phark के लिए ब्रू/बंडलर पोर्ट बनाने की कोशिश कर रहा है, हालांकि यह तैनाती तैयार नहीं है।

+0

यह लाइब्रेरी संस्करण के लिए काम कर सकता है, लेकिन ऐसा प्रतीत नहीं होता है कि यह कोर PHP संस्करण का उपयोग करने के लिए काम करेगा। – Zxaos

+0

सच। बस वर्चुअलएन्व समकक्ष बता रहा था। (एक पायथनब्रा विकल्प अधिक है जो आप खोज रहे हैं)। – ashwoods

7

mod_php के साथ अपाचे के भीतर PHP के विभिन्न संस्करणों को लोड करने के रूप में posible नहीं लगता है, तैनाती और विकास सेटअप की नकल करने का सबसे आसान तरीका वर्चुअलमाचिन के साथ होगा, जिसे आपने बताया था कि आप इससे बचना चाहते हैं।

डेवलपर्स के लिए वीएम के बोझ को बनाने का एक तरीका थोड़ा आसान है vagrant जैसे कुछ का उपयोग करना। दो फाइलों (योनि फ़ाइल, और शेफ/कठपुतली फ़ाइल) के साथ आप अपने वीएम का "संस्करण" कर सकते हैं, आसानी से उन्हें बना सकते हैं और प्रत्येक परियोजना के लिए उन्हें नष्ट कर सकते हैं और जब आवश्यक हो।

5

आभासी मशीनों का एक और विकल्प docker है।

1

अभी तक, इस समस्या के बॉक्स समाधान से बाहर नहीं है। एकमात्र समाधान जो निकट आता है वह वग्रेंट और puPHPet.com है जैसा कि यहां चर्चा की गई है: https://drupal.org/node/2055947 हमारे पास पाइथन के वर्चुअलनेव या रूबी के आरबीएनवी जैसे पर्यावरण क्यों नहीं हो सकते? यह एक अच्छा ओपन सोर्स प्रोजेक्ट बनाता है। यदि हम वैश्विक स्तर पर सैंडबॉक्स में कुछ पुस्तकालयों का परीक्षण करना चाहते हैं तो PHP के कई उदाहरण आसान हो सकते हैं। हम कंपोज़र जैसे पैकेज मैनेजर का उपयोग करके विभिन्न परियोजनाओं के लिए निर्भरताओं को स्थापित कर सकते हैं।

5

virtPHP बनाने और एक मशीन पर एक से अधिक अलग-थलग पीएचपी वातावरण के प्रबंधन के लिए एक उपकरण है। यह पायथन के वर्चुअलनेव की तरह है, लेकिन PHP के लिए। (README)

https://github.com/virtphp/virtphp

+1

जुलाई 2015 तक, हालांकि, virtPHP केवल php के कमांड लाइन (php-cli) उदाहरण को लक्षित करता है। दुर्भाग्यवश यह बताए गए समस्या से मदद नहीं करेगा। – Zxaos

संबंधित मुद्दे