ServBay में कस्टम PHP मॉड्यूल कंपाइल और इंस्टॉल करना (macOS)
ServBay macOS के लिए डिजाइन किया गया एक शक्तिशाली लोकल वेब डेवेलपमेंट एनवायरनमेंट है, जिसमें PHP, Node.js, Python, Go, Java, कई तरह के डेटाबेस (MySQL, PostgreSQL, MongoDB), कैशिंग (Redis), और वेब सर्वर (Caddy, Nginx, Apache) जैसे व्यापक सॉफ्टवेयर पैकेज प्री-इंस्टॉल मिलते हैं। ServBay हर सॉफ्टवेयर पैकेज के लिए मल्टी-वर्ज़न सपोर्ट देता है, जिससे आप अपने प्रोजेक्ट की जरूरत के अनुसार एनवायरनमेंट बदल सकते हैं।
जहां ServBay में ज़्यादातर पॉपुलर PHP मॉड्यूल्स पहले से मौजूद होते हैं, वहीं कई बार खास डेवेलपमेंट केसेज़ में आपको अतिरिक्त PHP मॉड्यूल्स कंपाइल और इंस्टॉल करने की जरूरत पड़ सकती है ताकि आप PHP की कार्यक्षमता बढ़ा सकें या थर्ड-पार्टी सेवाओं को जोड़ सकें।
यह दस्तावेज़ आपको ServBay के अंदर खुद के लिए कस्टम PHP मॉड्यूल्स कंपाइल और इंस्टॉल करने का स्टेप-बाय-स्टेप विस्तारपूर्वक मार्गदर्शन देगा। उदाहरण के लिए, हम imagick (छवि प्रोसेसिंग) तथा sqlsrv (Microsoft SQL Server डेटाबेस के लिए ड्राइवर) मॉड्यूल्स के कंपाइलेशन और इंस्टॉलेशन की पूरी प्रक्रिया बताएंगे, ताकि आपकी जरूरत के मुताबिक ServBay PHP एनवायरनमेंट को पावरफुल बनाया जा सके।
आवश्यक पूर्वशर्तें
महत्वपूर्ण सूचना
कोई भी PHP मॉड्यूल कंपाइल करने से पहले, सबसे जरूरी कदम है ServBay की ऑफिशियल डॉक्यूमेंटेशन के अनुसार, कंपाइलेशन एनवायरनमेंट का इनिशियलाइजेशन और सिस्टम एनवायरनमेंट वेरिएबल्स का सही सेटअप। इसके बिना कंपाइलेशन लगभग निश्चित रूप से असफल हो जाएगा, जिसमें कमांड, लाइब्रेरी या हेडर फाइल्स गायब होने जैसी समस्याएँ आएंगी।
ServBay के कंपाइल एनवायरनमेंट इनिशियलाइजेशन स्क्रिप्ट ज़रूरी कोण्वार्मेन्ट वेरिएबल्स सेट करती है जैसे PATH
(ServBay टैूलचेन की ओर इशारा करता है), SERVBAY_PACKAGE_FULL_PATH
(ServBay पैकेज रूट डायरेक्टरी), तथा CPU_NUMBER
(मल्टी-कोर कंपाइलेशन के लिए)। ये सेटिंग्स आगे आने वाली सभी कमांड्स के लिए बेहद महत्वपूर्ण हैं।
कंपाइलेशन एनवायरनमेंट इनिशियलाइज कैसे करना है, इसकी डिटेल्ड स्टेप्स के लिए यह डाक्यूमेंटेशन देखें: ServBay के साथ सेकंडरी कंपाइलेशन। कृपया सुनिश्चित करें कि आपने वहाँ बताई गई हर स्टेप को ठीक से समझकर पूरा किया है।
आगे बढ़ने से पहले, कृपया यह सुनिश्चित करें कि आपने ऊपर बताए गए ServBay कंपाइल एनवायरनमेंट इनिशियलाइजेशन की सभी स्टेप्स सफलतापूर्वक पूरी कर ली हैं और संबंधित एनवायरनमेंट वेरिएबल्स आपके करंट टर्मिनल सेशन में सही ढंग से सेट हैं।
PHP वर्ज़न का चयन क्यों आवश्यक है
ServBay का एक मेन फीचर है एक ही सिस्टम में एक से अधिक PHP वर्ज़न इंस्टॉल और चला पाना। इससे आप प्रोजेक्ट के आधार पर जरूरत के PHP वर्ज़न पर स्विच कर सकते हैं। लेकिन जब कोई PHP मॉड्यूल कंपाइल करना हो, तो आपको उसी खास PHP वर्ज़न के लिए कंपाइल करना होगा। PHP निर्माण में इस्तेमाल होने वाले phpize
और php-config
हर वर्ज़न के लिए खास होते हैं।
phpize
: PHP एक्सटेंशन मॉड्यूल का कंपाइलिंग एनवायरनमेंट तैयार करता है। यहconfig.m4
को पढ़करconfigure
स्क्रिप्ट बनाता है।php-config
: PHP इंस्टॉलेशन की डिटेल्ड इन्फर्मेशन (जैसे, कंपाइलर फ्लैग्स, हेडर फ़ोल्डर, एक्सटेंशन इंस्टॉल डायरेक्टरी आदि) देता है, जिससे उपस्थित PHP वर्ज़न के अनुरूप मॉड्यूल प्रॉपर तरीके से लिंक और कंपाइल हो सके।
इसलिए phpize
, php-config
या किसी अन्य PHP बिल्ड टूल का प्रयोग करते समय आपको उस PHP वर्ज़न की फ़ुल पाथ स्पेसिफाई करनी होगी जिसके लिए आप मॉड्यूल बनाना चाहते हैं। उदाहरण स्वरूप, यदि आप ServBay के PHP 8.3 के लिए मॉड्यूल कंपाइल कर रहे हैं, तो /Applications/ServBay/package/php/8.3/current/bin/phpize
और /Applications/ServBay/package/php/8.3/current/bin/php-config
का इस्तेमाल करें। इससे सुनिश्चित होता है कि आपके बनाए गए मॉड्यूल टारगेट PHP वर्ज़न से संगत रहें और रनटाइम में त्रुटियां न आएं।
इस दस्तावेज़ के उदाहरण PHP 8.3 वर्ज़न को लक्षित कर बनाए गए हैं। कृपया अपनी आवश्यकता अनुसार कमांड पथ को अपने Instaled PHP वर्ज़न के अनुरूप बदलें।
PHP imagick मॉड्यूल कंपाइल करना
imagick
PHP के सबसे पसंदीदा एक्सटेंशन में से एक है, जो अति-शक्तिशाली ImageMagick कमांड-लाइन टूलकिट पर आधारित है, और इमेज प्रोसेसिंग के लिए बेहद विस्तृत फिचर्स देता है। PHP के भीतर आप इससे इमेज स्केलिंग, क्रॉपिंग, फॉर्मेट कन्वर्ज़न, वॉटरमार्क, इमेज कॉम्पोज़िटिंग जैसे एडवांस्ड टास्क परफोर्म कर सकते हैं। नीचे दिए गए स्टेप्स ServBay में विशेष PHP वर्ज़न के लिए imagick मॉड्यूल को कंपाइल एवं इंस्टॉल करने की प्रक्रिया को स्पष्ट करते हैं:
स्टेप 1: ImageMagick डिपेंडेंसी लाइब्रेरी इंस्टॉल करें
imagick
मोड्यूल के लिए आपके सिस्टम में ImageMagick लाइब्रेरी इंस्टॉल होना जरूरी है। macOS पर Homebrew पैकेज मैनेजर से इंस्टॉल करना सबसे अच्छा तरीका है। अगर आप पहले से Homebrew यूज़ नहीं करते, तो इसकी आधिकारिक वेबसाइट पर इसकी इंस्टॉलेशन गाइड है।
Terminal खोलकर नीचे दिया गया कमांड चलाएँ:
bash
brew install imagemagick
1
स्टेप 2: imagick मॉड्यूल का सोर्स कोड प्राप्त करें
इसके बाद, PECL (PHP Extension Community Library) की वेबसाइट से imagick
मॉड्यूल का सोर्स कोड डाउनलोड करें। PECL imagick पेज पर जाइए और उपयुक्त वर्ज़न (आम तौर पर लेटेस्ट स्टेबल वर्ज़न) चुनें। उदाहरण स्वरूप यहाँ वर्ज़न 3.7.0
लिया गया है:
bash
wget https://pecl.php.net/get/imagick-3.7.0.tgz
1
स्टेप 3: सोर्स पैकेज को अनपैक करें और डायरेक्टरी में जाएँ
bash
tar zxvf imagick-3.7.0.tgz
cd imagick-3.7.0
1
2
2
स्टेप 4: कंपाइलिंग एनवायरनमेंट तैयार करें (phpize
का प्रयोग)
अब इस डायरेक्टरी में जाएँ और जिस PHP वर्ज़न के लिए आपको एक्सटेंशन कंपाइल करना है, उसके लिए उपयुक्त phpize
टूल चलाएँ। मान लें आप PHP 8.3 के लिए कर रहे हैं और आपने SERVBAY_PACKAGE_FULL_PATH
वेरिएबल सेट किया हुआ है:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
यह कमांड सफलतापूर्वक रन होने पर सोर्स पैकेज का config.m4
पढ़कर configure
स्क्रिप्ट व अन्य निर्माण फाइलें जेनरेट करेगा।
स्टेप 5: कंपाइलेशन विकल्प कॉन्फ़िगर करें
configure
स्क्रिप्ट चलाएँ, और ध्यान रखें --with-php-config पैरामीटर से टारगेट PHP वर्ज़न के php-config का पूरा पथ दें:
bash
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
अगर कोई त्रुटि आती है, तो संभवतः डिपेंडेंसी इंस्टॉल नहीं है या पथ गलत है।
स्टेप 6: मॉड्यूल कंपाइल और इंस्टॉल करें
अब make
और make install
चलाएँ (यहाँ ${CPU_NUMBER} आपके सिस्टम के CPU कोर की संख्या होगी जिसकी वजह से ये प्रक्रिया तेज़ होगी):
bash
make -j ${CPU_NUMBER}
make install
1
2
2
इंस्टॉल होने के बाद imagick.so का .so फाइल ऑटोमैटिकली संबंधित PHP के एक्सटेंशन डायरेक्टरी में पहुंचा दी जाएगी।
स्टेप 7: मॉड्यूल सक्रिय करें
मॉड्यूल इंस्टॉल हो जाने के बाद, टारगेट PHP वर्ज़न की कॉन्फ़िगरेशन फ़ाइल में इसे सक्रिय करें। ServBay में यह GUI से किया जा सकता है:
- ServBay प्रोग्राम खोलें
- बाएं तरफ मेनू में जाएँ:
Languages
→PHP
→PHP 8.3
- दाईं तरफ
PHP
टैब में नीचे जाएँ और "एडिशनल पैरामीटर" मेंextension=imagick.so
डालें Save
पर क्लिक करें, PHP अपने आप रीस्टार्ट होकर नया मॉड्यूल लोड कर लेगा
स्टेप 8: मॉड्यूल लोड होने की पुष्टि करें
मॉड्यूल ऐनेबल होने के बाद ServBay में अपने PHP पैकेज को रीस्टार्ट करना जरूरी है। आप GUI या कमांड-लाइन दोनों का उपयोग कर सकते हैं (कमांड के लिए ServBay डॉक्यूमेंटेशन देखें)।
अब टर्मिनल में चेक करें कि imagick लोड हुआ है या नहीं:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep imagick
1
अगर इंस्टॉलेशन सफल है, तो आउटपुट में imagick मिलेगा।
अधिक डिटेल में चेक करने के लिए, अपने वेब रूट (डिफ़ॉल्ट: /Applications/ServBay/www
) में एक info.php फाइल बनाएं और उसमें <?php phpinfo(); ?>
लिखें। फिर ब्राउज़र से http://localhost/info.php
खोलें और "imagick" शब्द खोजें, जिससे आप उसकी सारी जानकारी देख सकते हैं।
PHP sqlsrv/pdo_sqlsrv मॉड्यूल कंपाइल करना
sqlsrv
और pdo_sqlsrv
मॉड्यूल्स PHP के लिए आधिकारिक एक्सटेंशन हैं जिनसे आप Microsoft SQL Server से कनेक्ट कर सकते हैं। ये मॉड्यूल Microsoft के ODBC ड्राइवर पर आधारित हैं। यदि आपको ServBay के PHP एनवायरनमेंट से SQL Server कनेक्शन चाहिए, तो आपको ये मॉड्यूल्स कंपाइल और इंस्टॉल करने होंगे। नीचे प्रोसेस दी गई है:
ध्यान दें: मुख्य पूर्वशर्त
macOS में sqlsrv
मॉड्यूल कंपाइल कराने के लिए आपको पहले Microsoft SQL Server ODBC ड्राइवर (msodbcsql18
) और उसके कमांड-लाइन टूल्स (mssql-tools18
) इंस्टॉल करने जरूरी हैं। ये बिना मैन्युअल इंस्टॉलेशन के ServBay साथ नहीं आते।
Homebrew से ये इंस्टॉल करने के लिए:
bash
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18 mssql-tools18
1
2
3
2
3
यह सुनिश्चित कर लें कि यह डिपेंडेंसियाँ पहले से इंस्टॉल हैं और आप कंपाइल के दौरान इनके इंस्टॉलेशन पाथ का सही बात कर रहे हैं (Apple Silicon पर /opt/homebrew/
, Intel पर /usr/local/
)।
सुझाव
sqlsrv
और pdo_sqlsrv
दो अलग-अलग मॉड्यूलै हैं, दोनों को कंपाइल करना होगा, हालांकि तरीका लगभग एक जैसा है। नीचे उदाहरण sqlsrv
के लिए है।
स्टेप 1: Microsoft ODBC ड्राइवर और टूल्स इंस्टॉल करें
(Homebrew कमांड ऊपर दिए गए हैं, इस स्टेप को बिना छोड़े करें।)
स्टेप 2: sqlsrv मॉड्यूल सोर्स कोड प्राप्त करें
PECL ऑफिशियल वेबसाइट से sqlsrv और pdo_sqlsrv का सोर्स डाउनलोड करें। उदाहरण:
bash
wget https://pecl.php.net/get/sqlsrv-5.12.0.tgz # sqlsrv
wget https://pecl.php.net/get/pdo_sqlsrv-5.12.0.tgz # pdo_sqlsrv
1
2
2
स्टेप 3: अनपैक करें और डायरेक्टरी में जाएं
bash
tar zxvf sqlsrv-5.12.0.tgz
cd sqlsrv-5.12.0
# pdo_sqlsrv का तरीका भी यही है, आगे के स्टेप्स sqlsrv को ध्यान में रख कर बताए गए हैं।
1
2
3
4
2
3
4
स्टेप 4: कंपाइलिंग एनवायरनमेंट तैयार करें (phpize
का इस्तेमाल)
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
स्टेप 5: कंपाइलेशन विकल्प सेट करें (डिपेंडेंसी पाथ सहित)
ODBC डिपेंडेंसी Homebrew से इंस्टॉल होती है, इसलिए ./configure
से पहले इनवायरनमेंट वेरिएबल्स सेट करें:
bash
export LDFLAGS="-L/opt/homebrew/lib ${LDFLAGS}"
export CPPFLAGS="-I/opt/homebrew/opt/unixodbc/include -I/opt/homebrew/include ${CPPFLAGS}"
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
2
3
2
3
LDFLAGS
: बायनरी लाइब्रेरी का पथCPPFLAGS
: C/C++ हेडर फाइल पथ- अपने Homebrew इंस्टालेशन पथ के अनुसार पाथ्स में बदलाव करें।
स्टेप 6: मॉड्यूल कंपाइल और इंस्टॉल करें
bash
make -j ${CPU_NUMBER}
make install
1
2
2
इंस्टॉलेशन के बाद sqlsrv.so and pdo_sqlsrv.so संबंधित PHP एक्सटेंशन डायरेक्टरी में कॉपी हो जाएंगे।
स्टेप 7: मॉड्यूल सक्षम करें
ServBay GUI में:
- ServBay खोलें
- मेनू:
Languages
→PHP
→PHP 8.3
- एडिशनल पैरामीटर सेक्शन में
extension=sqlsrv.so
औरextension=pdo_sqlsrv.so
जोड़ें Save
पर क्लिक करें
स्टेप 8: मॉड्यूल लोड होने की पुष्टि करें
PHP पैकेज को रीस्टार्ट करें।
अब टर्मिनल में पुष्टि करें:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep sqlsrv
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep pdo_sqlsrv
1
2
2
अगर ठीक से इंस्टॉल हो गए तो आउटपुट में संबंधित मॉड्यूल दिखेंगे। आप इसी तरह phpinfo()
से वेब पर भी देख सकते हैं।
सामान्य समस्याएँ (FAQ)
- Q: कंपाइल करते समय "Cannot find autoconf" या इस तरह की कोई त्रुटि आती है?
- A: आमतौर पर यह संकेत है कि ServBay कंपाइल एनवायरनमेंट सही से सेटअप नहीं हुआ है। कृपया ऊपर दी गई "आवश्यक पूर्वशर्तें" और ServBay सेकंडरी कंपाइल दस्तावेज़ में बताई स्टेप्स को अच्छी तरह से फ़ॉलो करें। अतिआवश्यक बिल्ड टूल्स (autoconf, automake, libtool आदि) इंस्टॉल और सही ढंग से PATH में होने चाहिए। सामान्यतः इनिशियलाइजेशन स्क्रिप्ट रन और टर्मिनल रीस्टार्ट करने से समस्या हल हो जाती है।
- Q:
configure
स्क्रिप्ट का रन करना फेल हो जाए और किसी लाइब्रेरी या हेडर फाइल के न मिलने की बात हो?- A: इसका मतलब है कि उस मॉड्यूल की डिपेंडेंसी इंस्टॉल नहीं है या पथ गलत दिया है।
imagick
के लिए Homebrew द्वारा ImageMagick इंस्टॉल करें:brew install imagemagick
sqlsrv
के लिए Microsoft ODBC ड्राइवर (msodbcsql18
) औरmssql-tools18
Homebrew से इंस्टॉल हों। साथ हीLDFLAGS
,CPPFLAGS
को ठीक तरह से सेट करें।- यह भी देखें कि ServBay एनवायरनमेंट सेटअप में Homebrew के पाथ्स ठीक से शामिल हों।
- A: इसका मतलब है कि उस मॉड्यूल की डिपेंडेंसी इंस्टॉल नहीं है या पथ गलत दिया है।
- Q:
make
याmake install
फेल होते हैं?- इसके अनेक कारण हो सकते हैं:
- कंपाइलिंग डिपेंडेंसी गायब: त्रुटि संदेश ध्यान से देख लें और संबंधित डिपेंडेंसी इंस्टॉल करें।
- कॉन्फ़िगरेशन त्रुटि:
configure
कमांड के पैरामीटर फिर से जांच लें। - अनुमति समस्या:
make install
के लिए आवश्यक अनुमति न मिल रही हो, तो जरूरत पड़ने परsudo make install
आजमाएं (सावधानी अवश्य रखें)। - सोर्स कोड की समस्या: डाउनलोड किया हुआ सोर्स पैकेज भिन्न या ख़राब न हो।
- इसके अनेक कारण हो सकते हैं:
- Q: .so फाइल एक्सटेंशन डायरेक्टरी में है और ini फाइल में इनेबल भी है, पर
php -m
याphpinfo()
में नजर नहीं आ रहा?- A:
- अक्सर कारण: PHP पैकेज को रीस्टार्ट नहीं किया गया। ini फाइल बदलने के बाद PHP पैकेज को जरूर रीस्टार्ट करें।
- ini फाइल में स्पेलिंग या सिंटैक्स गलती हो सकती है।
- एक्सटेंशन डायरेक्टरी पथ में गलत सेटिंग हो सकती है।
- मॉड्यूल फाइल करप्ट है या PHP वर्ज़न से असंगत है - दोबारा सीखते हुए केयर करें। PHP लॉग फाइल्स देखें।
- A:
सारांश
इस गाइड के निर्देशों का पालन करके आप ServBay macOS लोकल डेवलपमेंट एनवायरनमेंट में कस्टम PHP मॉड्यूल्स जैसे imagick
व sqlsrv
सफलतापूर्वक कंपाइल और इंस्टॉल कर सकते हैं। इस प्रक्रिया की प्रमुख बातें हैं:
- ServBay कंपाइलिंग एनवायरनमेंट का सही इनिशियलाइजेशन: तभी आगे सब कुछ बिना समस्या होगा।
- सही PHP वर्ज़न का चयन:* हमेशा
phpize
औरphp-config
के लिए फ़ुल पाथ दें। - मॉड्यूल्स की बाहरी डिपेंडेंसीज का हल: डिपेंडेंसी इंस्टॉल करें, उनके पथ
LDFLAGS
,CPPFLAGS
, आदि के जरिए घोषित करें। - मॉड्यूल को प्रभावी बनाना: PHP के
conf.d
डायरेक्टरी में ini फाइल सेextension=modulename.so
जोड़ें। - PHP पैकेज को रीस्टार्ट करें: तभी नए मॉड्यूल्स एक्टिवेट होंगे।
ServBay एक ऑल-इन-वन लोकल डेवलपमेंट प्लेटफॉर्म है और आपको शीर्ष क्वालिटी वाला वेब डेवेलपमेंट वर्कफ़्लो मिलने में मदद करता है। यहां बताए गए PHP मॉड्यूल कंपाइल करने के अलावा, यह MySQL, PostgreSQL, MongoDB, Redis, Caddy, Nginx, Apache, Node.js, Python, Go, Java, .NET, Ruby, Rust आदि को भी प्री-इंटीग्रेट करता है। ServBay में ईज़ी SSL सर्टिफिकेट, CORS कॉन्फ़िगरेशन, ऑटो-बैकअप, root पासवर्ड रीसेट, Lokcal HTTPS के लिए यूज़र/पब्लिक CA जैसी कई सुविधाएँ हैं जो आपके वर्कफ़्लो को डेवेलपर-फ्रेंडली बनाती हैं।
हमें उम्मीद है यह गाइड ServBay के PHP एनवायरनमेंट में जरूरी फीचर्स जोड़ने और वेब डेवेलपमेंट को और भी बेहतर बनाने में आपकी मदद करेगी। अगर कोई समस्या आ रहे, तो ServBay के ऑफिसियल डाक्यूमेंटेशन या समुदाय से सहायता जरूर लें।