ServBay में .user.ini
फाइल का उपयोग कैसे करें: लोकल PHP कॉन्फ़िगरेशन गाइड
ServBay एक शक्तिशाली, इंटीग्रेटेड लोकल वेब डेवलपमेंट एनवायरमेंट है, जिसे खासकर डेवलपर्स के लिए बनाया गया है। यह कई भाषाओं और तकनीकी स्टैक्स को सपोर्ट करता है, जिसमें फ्लैक्सीबल PHP वर्शन मैनेजमेंट और आसान कॉन्फ़िगरेशन विकल्प शामिल हैं। वास्तविक परियोजनाओं में, अलग-अलग प्रोजेक्ट्स को PHP सेटिंग्स की विशिष्ट आवश्यकताएं हो सकती हैं, जैसे फ़ाइल अपलोड सीमा, मेमोरी लिमिट या एरर रिपोर्टिंग लेवल। सीधे ग्लोबल php.ini
फाइल में बदलाव करने से हर प्रोजेक्ट प्रभावित होता है, जो मल्टी-प्रोजेक्ट मैनेजमेंट में असुविधाजनक है।
सौभाग्यवश, PHP .user.ini
फाइल मैकेनिज्म प्रदान करता है, जिससे डेवलपर्स किसी डायरेक्टरी और उसकी सबडायरेक्टरीज़ में अपनी खुद की PHP सेटिंग्स डिफाइन कर सकते हैं, वो भी ग्लोबल php.ini
को छुए बिना। ServBay पूरी तरह से .user.ini
को सपोर्ट करता है, जिससे किसी भी विशेष प्रोजेक्ट या फोल्डर के लिए PHP सेटिंग्स ट्यून करना बेहद आसान और प्रभावी हो जाता है।
यह लेख .user.ini
फाइल की कार्यप्रणाली, ServBay में इसके उपयोग के तरीके और उदाहरण के साथ प्रोजेक्ट-विशिष्ट PHP सेटिंग्स सेट करने की प्रक्रिया को विस्तार से समझाएगा।
.user.ini
फाइल का परिचय
.user.ini
फाइल को PHP वर्शन 5.3.0 में पेश किया गया था। यह पहले के, वेब सर्वर कॉन्फ़िगरेशन (जैसे Apache में .htaccess
की php_value
और php_flag
) के मुकाबले ज्यादा फ्लैक्सीबल और सुरक्षित तरीका प्रदान करती है। आप वेब-एक्सेस की जाने वाली डायरेक्टरी में .user.ini
फाइल रख सकते हैं, जिसमें की गई सेटिंग्स सिर्फ उस डायरेक्टरी और उसकी सबडायरेक्टरीज़ के PHP स्क्रिप्ट्स पर लागू होंगी।
मुख्य विशेषताएँ
- स्थानीय प्रभाव क्षेत्र:
.user.ini
फाइल की सेटिंग्स सिर्फ उसी डायरेक्टरी और उसकी सबडायरेक्टरीज़ पर लागू होंगी, ServBay की ग्लोबलphp.ini
या बाकी प्रोजेक्ट्स प्रभावित नहीं होंगे। - ज्यादा लचीलापन: डेवलपर हर प्रोजेक्ट की आवश्यकता अनुसार अलग-अलग PHP सेटिंग्स सेट कर सकते हैं।
- आसान प्रबंधन: ग्लोबल सर्वर या PHP कॉन्फ़िगरेशन फाइल में बदलाव किए बिना ही प्रोजेक्ट आधारित सेटिंग्स मैनेज कर सकते हैं, जिससे कॉन्फ़िगरेशन टकराव की संभावना कम हो जाती है।
- रीस्टार्ट की आवश्यकता नहीं:
php.ini
में बदलाव करने पर आमतौर पर PHP-FPM या वेब सर्वर को रीस्टार्ट करना पड़ता है। वहीं,.user.ini
में बदलावuser_ini.cache_ttl
(आमतौर पर 300 सेकंड या 5 मिनट) के बाद अपने आप प्रभावी हो जाते हैं।
कौन-कौन सी निर्देश सेट की जा सकती हैं?
हर PHP सेटिंग .user.ini
में नहीं बदली जा सकती। किसी निर्देश का "परिवर्तन मोड" (Changeable Mode) तय करता है कि उसे कहां सेट किया जा सकता है। सिर्फ वे ही निर्देश .user.ini
में बदले जा सकते हैं, जिनका मोड PHP_INI_USER
, PHP_INI_PERDIR
या PHP_INI_ALL
है।
आमतौर पर .user.ini
में बदली जाने वाली आम सेटिंग्स:
upload_max_filesize
post_max_size
memory_limit
display_errors
log_errors
max_execution_time
session.save_path
date.timezone
PHP_INI_SYSTEM
मोड वाली निर्देश जैसे extension_dir
, zend_extension
, disable_functions
आदि .user.ini में सेट नहीं की जा सकतीं—इन्हें सिर्फ मेन php.ini
या वेब सर्वर की कॉन्फ़िगरेशन में बदला जा सकता है।
हर सेटिंग का मोड देखने के लिए PHP मैनुअल: php.ini निर्देशों की सूची देखें।
ServBay में .user.ini
का उपयोग कैसे करें
ServBay में .user.ini
फाइल का उपयोग बहुत ही सरल है। नीचे दिए गए चरणों में समझाया गया है, उदाहरण के लिए upload_max_filesize
और memory_limit
की सेटिंग्स करेंगे।
मान लीजिए आपकी वेबसाइट का रूट डायरेक्टरी ServBay के डिफॉल्ट पथ /Applications/ServBay/www/
में है और आप myproject
नामक प्रोजेक्ट के लिए कस्टम PHP सेटिंग्स सेट करना चाहते हैं, जिसकी वेब रूट डायरेक्टरी है /Applications/ServBay/www/myproject/public
।
चरण 1: टारगेट डायरेक्टरी निर्धारित करें
पहले उस डायरेक्टरी को तय करें, जहां आपको कस्टम PHP सेटिंग्स लागू करनी हैं। यह आमतौर पर सर्वर का वेब रूट (उदाहरण: लाभरेवल या सिम्फनी प्रोजेक्ट में public
फोल्डर) या कोई अन्य खास सबडायरेक्टरी हो सकती है।
उदाहरण: /Applications/ServBay/www/myproject/public
चरण 2: .user.ini
फाइल बनाएं या एडिट करें
टारगेट डायरेक्टरी में .user.ini
नाम की नई फाइल बनाएं (अगर पहले से मौजूद है तो एडिट करें)। ध्यान दें, डॉट (.) से शुरू होने की वजह से यह फाइल आमतौर पर फाइल सिस्टम में छिपी होती है, इसके लिए "hidden files show" करना पड़ सकता है।
टर्मिनल में फाइल बनाने के लिए:
bash
cd /Applications/ServBay/www/myproject/public
touch .user.ini
1
2
2
फिर टेक्स्ट एडिटर में .user.ini
को खोलें और ज़रूरी PHP डायरेक्टिव्स को लाइन दर लाइन जोड़ें, उदाहरण:
ini
; अधिकतम फाइल अपलोड साइज़ 20MB सेट करें
upload_max_filesize = 20M
; PHP स्क्रिप्ट की मेमोरी लिमिट 256MB करें
memory_limit = 256M
; एरर डिस्प्ले ऑन करें (सिर्फ डेवलपमेंट मोड में)
display_errors = On
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
फाइल को सेव करके बंद कर दें।
चरण 3: सेटिंग्स लागू होने का इंतजार करें या फोर्स रिफ्रेश करें
.user.ini
फाइल में बदलाव तुरंत प्रभावी नहीं होते—PHP इन फाइलों को परफॉरमेंस के लिए कैश करता है। डिफॉल्ट रूप में, user_ini.cache_ttl
सेटिंग इसे 300 सेकंड (5 मिनट) तक कैश करती है। तब तक बदलाव खुद-ब-खुद लागू हो जाएंगे।
यदि आप तुरंत बदलाव देखना चाहते हैं, तो इन तरीकों में से कोई आज़मा सकते हैं (आपके ServBay के वर्शन और सेटिंग्स पर निर्भर):
- संबंधित PHP-FPM प्रक्रिया को रीस्टार्ट करें: ServBay ऐप में वेबसाइट के लिए सेलेक्ट किए PHP वर्शन पर जाएं, और उसका PHP-FPM सर्विस स्टॉप व स्टार्ट करें।
- ServBay को पुनः आरंभ करें: यह सबसे पक्का तरीका है, लेकिन इससे सब लोकल सर्विसेज़ रुक जाएंगी।
- कैश एक्सपायर होने का इंतजार करें: यह सबसे सुझाया जाने वाला तरीका है, खासकर जब बहुत जल्दी बदलाव की ज़रूरत न हो।
चरण 4: .user.ini
के प्रभाव की पुष्टि करें
जांचने के लिए कि आपकी .user.ini
सेटिंग्स लागू हुई हैं या नहीं, एक सिंपल PHP फाइल बनाएं जो PHP की पूरी कॉन्फ़िगरेशन दिखाए।
जहां आपने .user.ini
फाइल रखी है (उदा. /Applications/ServBay/www/myproject/public
), वहां एक info.php
नामक फाइल बनाएं, जिसमें यह हो:
php
<?php
phpinfo();
?>
1
2
3
2
3
info.php
को सेव करें।
अब अपने ब्राउज़र में ServBay वेबसाइट के तहत info.php
फाइल खोलें। यदि आपका प्रोजेक्ट ServBay डोमेन myproject.servbay.demo
पर है और info.php
public
डायरेक्टरी में है, तो ब्राउज़र में यह यूआरएल खोलें: https://myproject.servbay.demo/info.php
खुले phpinfo()
पेज में वे निर्देश देखें जिन्हें आपने .user.ini
में सेट किया था (जैसे upload_max_filesize
, memory_limit
, display_errors
)। यहां दो कॉलम होंगे: Master Value
(ग्लोबल सेटिंग) और Local Value
(वर्तमान स्क्रिप्ट की वास्तविक सेटिंग)।
Master Value
: ग्लोबलphp.ini
में दिए गए मान।Local Value
: आपकी.user.ini
या वेब सर्वर कॉन्फ़िगरेशन से प्रभावित वास्तविक मान।
अगर Local Value
वही है जो आपने .user.ini
में सेट किया (जैसे 20M
, 256M
, On
), समझिए आपकी फाइल सफलतापूर्वक लागू हो गई है।
महत्वपूर्ण: जांच के बाद सुरक्षा की दृष्टि से info.php
फाइल को डिलीट या उसकी एक्सेस लिमिट करें, क्योंकि यह आपके सर्वर की पूरी कॉन्फ़िगरेशन उजागर करती है।
अतिरिक्त सुझाव और सावधानियां
- फाइल का नाम और स्थान:
.user.ini
नाम सही होना चाहिए और वो संबंधित डायरेक्टरी में रखा जाना चाहिए। इसका असर उस डायरेक्टरी और उसकी सबडायरेक्टरीज़ पर पड़ेगा। - डायरेक्टिव मोड: दोहराएं, सिर्फ खास मोड की ही सेटिंग्स
.user.ini
में बदल सकते हैं।PHP_INI_SYSTEM
मोड की सेटिंग्स ट्राय मत करें, वे काम नहीं करेंगी और शायद कोई एरर न भी दिखे। पुष्टि के लिए PHP मैनुअल देखें। - कैश: बार-बार
.user.ini
बदलने और तुरंत एप्लाई करने की आवश्यकता हो तो ग्लोबलphp.ini
कीuser_ini.cache_ttl
को कुछ समय के लिए कम (जैसे 5) कर सकते हैं, लेकिन प्रोडक्शन में ऐसा करना सही नहीं—पर्फोर्मेंस पर फर्क पड़ सकता है। ग्लोबलphp.ini
में बदलाव के लिए PHP-FPM को रीस्टार्ट करना अनिवार्य है। - प्राथमिकता (प्रायोरिटी): PHP सेटिंग्स की प्राथमिकता आमतौर पर यह रहेगी: डिफॉल्ट मूल मान <
php.ini
(या अतिरिक्त.ini
फाइलें) < वेब सर्वर सेटिंग्स (php_value
/php_flag
) <.user.ini
< स्क्रिप्ट मेंini_set()
।.user.ini
की सेटिंग्स ग्लोबलphp.ini
को ओवरराइट करती हैं, मगर स्क्रिप्ट्स मेंini_set()
से बदली जा सकती हैं। - सुरक्षा:
.user.ini
फाइल में संवेदनशील सूचना (Sensitive Info) न रखें, भले ही उसका असर सिर्फ लोकल डायरेक्टरी पर हो—यह फाइल वेब-अक्सेसिबल जगह में होती है (हालांकि आमतौर पर सीधा एक्सेस ब्लॉक किया जाता है)।
सामान्य प्रश्न (FAQ)
प्र.: मैंने .user.ini
फाइल बनाई है और सेटिंग्स जोड़ी हैं, लेकिन असर नहीं दिख रहा—क्यों?
उत्तर: संभावित कारण:
- फाइल का नाम या स्थान गलत है: फाइल सही से
.user.ini
नाम से और उचित डायरेक्टरी में रखें। - निर्देश का मोड सपोर्टेड नहीं: वह निर्देश
.user.ini
में बदला नहीं जा सकता (मोडPHP_INI_USER
याPHP_INI_PERDIR
होना चाहिए)। PHP मैनुअल देखें। - कैश अभी तक एक्सपायर नहीं: सेटिंग्स प्रभाव के लिए
user_ini.cache_ttl
(डिफॉल्ट 5 मिनट) का इंतजार करें या PHP-FPM रीस्टार्ट करें। - सिंटैक्स एरर:
.user.ini
फाइल को सिंटैक्स एरर के लिए चेक करें। - उच्च प्राथमिकता ओवरराइट: आपने जिन सेटिंग्स को बदला, वे स्क्रिप्ट में
ini_set()
फंक्शन से ओवरराइट हो रही होंगी।
प्र.: .user.ini
और ग्लोबल php.ini
में क्या फर्क है?
उत्तर: ग्लोबल php.ini
पूरी PHP इंस्टॉलेशन (या वर्शन) को प्रभावित करता है, हर स्क्रिप्ट पर लागू होता है (जब तक बाद में ओवरराइट न हो)। .user.ini
सिर्फ अपने डायरेक्टरी और सबडायरेक्टरीज़ की स्क्रिप्ट्स पर लागू है, और सिर्फ कुछ सेटिंग्स ही बदल सकते हैं। .user.ini
का मुख्य फायदा इसकी लोकल वैलिडिटी और बिना ग्लोबल फाइल छुए सेटिंग्स बदलने में है।
निष्कर्ष
ServBay में .user.ini
फाइल का प्रयोग प्रोजेक्ट-विशिष्ट PHP सेटिंग्स प्रबंधित करने का सबसे अच्छा तरीका है। इससे जबरदस्त लचीलापन मिलता है, जिससे आप दूसरे प्रोजेक्ट्स या ग्लोबल ServBay कॉन्फ़िगरेशन में हस्तक्षेप किए बिना अपने प्रोजेक्ट के PHP एनवायरमेंट में सुधार कर सकते हैं। ऊपर दिए गाइड और उदाहरणों को फॉलो करके आप आसानी से अपनी ServBay परियोजना में .user.ini
सेटिंग्स कर सकते हैं, जिससे न सिर्फ विकास की कार्यक्षमता बढ़ेगी, बल्कि कॉन्फ़िगरेशन प्रबंधन भी सरल बना रहेगा। ServBay की डिज़ाइन फिलॉसफी डेवलपर्स के लिए एक शक्तिशाली और अनुकूलनीय स्थानीय विकास उपकरण प्रदान करना है, और .user.ini
के लिए इसकी उत्कृष्ट सपोर्ट इसी का प्रमाण है।