KapsuleHost वेब होस्टिंग WordPress, WooCommerce और PHP साइटों के लिए कौन से PHP संस्करण और एक्सटेंशन प्रदान करती है, आप स्वयं कौन-सी सेटिंग्स बदल सकते हैं, और एक बदलाव को दिखने में पाँच मिनट तक क्यों लग सकते हैं।
स्टैटिक, Node.js और Python साइटें PHP नहीं चलातीं। किसी साइट के लिए PHP से जुड़ी हर चीज़ एक ही जगह रहती है: वेबसाइटें, साइट पर क्लिक करें, सेटिंग्स, फिर PHP। उस पेज में संस्करण चुनने का विकल्प, वे सेटिंग्स जिन्हें आप बदल सकते हैं, एक Composer रनर, और PHP एरर लॉग मौजूद होते हैं।

PHP संस्करण चुनना
चार संस्करण चुने जा सकते हैं: 8.4, 8.3, 8.2 और 8.1। नई साइटों के लिए डिफ़ॉल्ट रूप से 8.3 सेट होता है।
वह सबसे नया संस्करण चुनें जिसे आपका सॉफ़्टवेयर वास्तव में सपोर्ट करता है। नया PHP काफ़ी तेज़ होता है और इसे ज़्यादा समय तक सुरक्षा फिक्स के साथ सपोर्ट किया जाता है। सीधे सबसे नए संस्करण पर न जाने की वजह अनुकूलता (compatibility) है: कोई पुराना प्लगइन या बरसों पहले लिखा गया कस्टम कोड ऐसे संस्करण पर पूरी तरह विफल हो सकता है जिसके विरुद्ध उसका कभी परीक्षण ही नहीं हुआ।
इसे बदलने के लिए, संस्करण चुनें और संस्करण लागू करें पर क्लिक करें। बदलाव तुरंत प्रभावी हो जाता है, आपकी ओर से किसी रीस्टार्ट की ज़रूरत नहीं पड़ती और कोई डाउनटाइम नहीं होता।
PHP संस्करण पहले स्टेजिंग पर बदलें, साइट को क्लिक करके देखें, और तभी इसे प्रोडक्शन पर बदलें। अगर आपको यह लाइव करना ही है, तो उस समय करें जब आप इसे देख सकें, और यह जान लें कि वापस पलटना बस एक क्लिक का काम है। देखें स्टेजिंग एनवायरनमेंट।
अगर संस्करण बदलने से साइट टूट जाती है, तो पिछले संस्करण पर वापस जाएँ और लॉग पढ़ें। एरर में उस फ़ाइल का नाम होगा जो नहीं चल सकी। देखें PHP संस्करण बदलना और एरर लॉग।
आप कौन-सी सेटिंग्स बदल सकते हैं
PHP पेज पाँच सेटिंग्स को ड्रॉपडाउन के रूप में दिखाता है। व्यवहार में असल समस्याएँ इन्हीं से होती हैं, इसीलिए इन्हीं को सामने रखा गया है।
| सेटिंग | डिफ़ॉल्ट | उपलब्ध मान | यह क्या नियंत्रित करती है |
|---|---|---|---|
memory_limit | 256M | 128M, 256M, 512M, 1024M, 2048M | एक रिक्वेस्ट कितनी मेमोरी इस्तेमाल कर सकती है |
max_execution_time | 30 | 30, 60, 120, 300, 600 | एक रिक्वेस्ट कितने सेकंड तक चल सकती है |
upload_max_filesize | 64M | 16M, 32M, 64M, 128M, 256M | अपलोड की जा सकने वाली सबसे बड़ी एकल फ़ाइल |
post_max_size | 65M | 17M, 33M, 65M, 129M, 257M | सबसे बड़ा कुल फ़ॉर्म सबमिशन |
max_input_vars | 3000 | 1000, 3000, 5000, 10000 | एक सबमिशन में कितने फ़ील्ड हो सकते हैं |
आपको कौन-सी सेटिंग चाहिए:
- एक निश्चित आकार से ऊपर अपलोड विफल होना:
upload_max_filesizeबढ़ाएँ, और इसके साथpost_max_sizeभी। - बड़ा फ़ॉर्म या पेज बिल्डर सेव करने पर फ़ील्ड खो देना:
max_input_varsबढ़ाएँ। यह समस्या अदृश्य और बहुत परेशान करने वाली होती है, क्योंकि कोई एरर नहीं आता। अतिरिक्त फ़ील्ड चुपचाप हटा दिए जाते हैं। - बिना किसी एरर के पेज का बीच में ही रुक जाना:
memory_limitबढ़ाएँ। देखें WordPress मेमोरी लिमिट। - किसी लंबे इम्पोर्ट या एक्सपोर्ट का समय समाप्त हो जाना:
max_execution_timeबढ़ाएँ, और इसके बजाय कमांड लाइन से यह काम चलाने पर विचार करें। देखें WP-CLI।
post_max_size, upload_max_filesize से बड़ा होना चाहिए, क्योंकि अपलोड पोस्ट के अंदर से होकर जाता है। अगर आप ऐसा संयोजन चुनते हैं जिसमें यह सही नहीं बैठता, तो प्लेटफ़ॉर्म post_max_size को स्वतः बढ़ाकर सही कर देता है। इसीलिए हो सकता है आपको वह मान दिखे जो आपने चुना ही नहीं था।
बदलाव दिखने में पाँच मिनट तक क्यों लगते हैं
इस पेज पर सबसे आम भ्रम यही है, इसलिए इसे स्पष्ट रूप से समझना ज़रूरी है।
आपकी सेटिंग्स आपकी साइट के डॉक्यूमेंट रूट में एक .user.ini फ़ाइल में लिखी जाती हैं। PHP उस फ़ाइल को पढ़ता है और फिर इसे 300 सेकंड के लिए कैश कर लेता है, यानी पाँच मिनट। जब तक वह कैश समाप्त नहीं होता, PHP पिछले मानों का ही इस्तेमाल करता रहता है।
इसलिए बदलाव सेव करने के बाद:
- पेज पाँच मिनट तक पुरानी लिमिट ही दिखाता रहेगा।
phpinfo()भी पाँच मिनट तक पुरानी लिमिट ही बताता रहेगा।- हार्ड रिफ्रेश से मदद नहीं मिलती। आपके ब्राउज़र कैश को साफ़ करने से भी नहीं।
- आपको कुछ भी रीस्टार्ट करने की ज़रूरत नहीं है, और आप कर भी नहीं सकते। बस प्रतीक्षा करें।
अगर पाँच मिनट से ज़्यादा हो चुका है और मान फिर भी नहीं बदला है, तो वाकई कुछ गड़बड़ है और इसके लिए टिकट खोलना उचित रहेगा।
.user.ini को स्वयं संपादित करना
अगर आप चाहें, या पैनल द्वारा उपलब्ध न कराई गई किसी डायरेक्टिव की ज़रूरत हो, तो आप SFTP या SSH के ज़रिए सीधे .user.ini को संपादित कर सकते हैं। यह आपकी साइट के डॉक्यूमेंट रूट में रहती है। देखें SFTP एक्सेस।
फ़ॉर्मेट है: हर लाइन में एक डायरेक्टिव:
memory_limit = 512M
max_execution_time = 120
.user.ini क्या कर सकती है, इस पर दो महत्वपूर्ण सीमाएँ हैं:
यह केवल उन्हीं डायरेक्टिव के लिए काम करती है जिन्हें PHP प्रति डायरेक्टरी या प्रति उपयोगकर्ता सेट करने की अनुमति देता है। ऊपर बताई गई सभी पाँच इसमें आती हैं। केवल सिस्टम स्तर पर सेट की जा सकने वाली डायरेक्टिव, जैसे disable_functions या extension= के ज़रिए किसी एक्सटेंशन को लोड करना, .user.ini फ़ाइल में अनदेखी कर दी जाती हैं। इनसे कोई एरर नहीं आएगा, ये बस कुछ नहीं करेंगी, इसीलिए लोग इन पर पूरी दोपहर बर्बाद कर देते हैं।
पैनल केवल सामान्य कुंजियों को ही वापस पढ़ता है। डॉट वाली डायरेक्टिव, जैसे opcache.enable या date.timezone, PHP द्वारा मानी तो जाती हैं लेकिन पैनल फ़ॉर्म में नहीं दिखेंगी। अगर आपने किसी को हाथ से सेट किया है और बाद में पैनल के ज़रिए कुछ बदला है, तो बाद में फ़ाइल ज़रूर जाँचें।
KapsuleHost वेब होस्टिंग nginx चलाती है, Apache नहीं। .htaccess फ़ाइलों को कोई नहीं पढ़ता। .htaccess फ़ाइल में रखी गई PHP डायरेक्टिव, जैसे php_value memory_limit, यहाँ बिल्कुल कुछ नहीं करतीं। इसके बजाय .user.ini या पैनल का इस्तेमाल करें। देखें WordPress और .htaccess।
कौन-से एक्सटेंशन उपलब्ध हैं
मानक बिल्ड व्यापक है और इसमें वह सब कुछ शामिल है जो WordPress, WooCommerce और अधिकतर PHP एप्लिकेशन माँगते हैं।
डेटाबेस: mysqli, pdo_mysql, sqlite3, pdo_sqlite
इमेज: gd, imagick, exif
कैशिंग: Zend OPcache, redis, memcached
टेक्स्ट और लोकेल: mbstring, iconv, intl, gettext, ctype
XML और डेटा: dom, simplexml, xml, xmlreader, xmlwriter, xsl, json
नेटवर्क: curl, soap, sockets, ftp, openssl
गणित और क्रिप्टो: bcmath, sodium, hash, random
फ़ाइलें और सिस्टम: fileinfo, zip, zlib, phar, posix, pcntl, shmop, calendar, tokenizer
जानने लायक एक संस्करण अंतर: imap एक्सटेंशन 8.3 और उससे पुराने संस्करणों में मौजूद है लेकिन 8.4 में नहीं, क्योंकि इसे उस रिलीज़ में PHP से ही हटा दिया गया था। अगर आपके पास कोई ऐसा एप्लिकेशन है जिसे अब भी इसकी ज़रूरत है, तो 8.3 पर ही रहें या उस एप्लिकेशन को किसी आधुनिक मेल लाइब्रेरी पर ले जाएँ।
इंस्टॉल नहीं हैं: PostgreSQL ड्राइवर, MongoDB, Xdebug, mcrypt, और ionCube व SourceGuardian जैसे कमर्शियल कोड लोडर।
आप पैनल से खुद एक्सटेंशन सक्षम या अक्षम नहीं कर सकते। अगर आपके एप्लिकेशन को सूची में शामिल न किसी चीज़ की ज़रूरत है, तो टिकट खोलें और बताएँ कि आप क्या चला रहे हैं। इसे जोड़ा जा सकता है या नहीं, यह उस एक्सटेंशन पर निर्भर करता है। देखें सपोर्ट टिकट खोलना।
असल में क्या लोड है, यह जाँचना
अनुमान लगाने के बजाय:
- WordPress पर: Tools, फिर Site Health, फिर Info, फिर Server। यह PHP संस्करण और संबंधित लिमिट बताता है।
- SSH के ज़रिए: संस्करण के लिए
php -vऔर लोड किए गए एक्सटेंशन के लिएphp -m। देखें SSH कुंजियाँ जोड़ना।
अपने वेब रूट में phpinfo() फ़ाइल न छोड़ें। यह आपके पाथ, आपके एक्सटेंशन और आपका कॉन्फ़िगरेशन किसी को भी सार्वजनिक कर देती है जिसे यह फ़ाइल मिल जाए, और स्वचालित स्कैनर ठीक इसी फ़ाइल नाम को ढूँढते हैं। अगर आप कुछ जाँचने के लिए एक फ़ाइल बनाते हैं, तो तुरंत बाद में उसे हटा दें।