Ubuntu 10.10 पर Apache / PHP की स्थापना पर सत्र फ़ाइलों का डिफ़ॉल्ट स्थान क्या है?
Ubuntu 10.10 पर Apache / PHP की स्थापना पर सत्र फ़ाइलों का डिफ़ॉल्ट स्थान क्या है?
जवाबों:
डिफ़ॉल्ट session.save_path
पर सेट है ""
जो आपके सिस्टम के अस्थायी निर्देशिका के लिए मूल्यांकन करेंगे। इस टिप्पणी को https://bugs.php.net/bug.php?id=26757 पर देखें :
आगामी releaess (sic) में save_path के लिए नया डिफ़ॉल्ट खाली स्ट्रिंग होगा, जिसके कारण अस्थायी निर्देशिका की जांच की जाएगी।
आप अस्थायी फ़ाइलों के लिए उपयोग की जाने वाली निर्देशिका पथ को वापस करने के लिए उपयोग कर सकते हैंsys_get_temp_dir
वर्तमान सत्र सेव पथ को खोजने के लिए , आप उपयोग कर सकते हैं
इस जवाब का संदर्भ लें कि अस्थायी फ़ंक्शन क्या है जब यह फ़ंक्शन खाली स्ट्रिंग देता है।
php.ini
फाइलें हैं, php_info()
आपको बताएंगे कि मौजूदा इवैल्यू के दौरान कौन सा उपयोग में है, और locate php.ini
क्या आप उन्हें खोजने में मदद करेंगे
पहले session.save_path
उपयोग करने के मूल्य की जाँच करें ini_get('session.save_path')
या phpinfo()
। यदि वह गैर-रिक्त है, तो यह दिखाएगा कि सत्र फ़ाइलों को कहाँ सहेजा गया है। कई स्थितियों में यह डिफ़ॉल्ट रूप से खाली होता है, जिस स्थिति में यह पढ़ा जाता है:
उबंटू या डेबियन मशीनों पर, यदि session.save_path
सेट नहीं किया जाता है, तो सत्र फ़ाइलों को सहेजा जाता है /var/lib/php5
।
RHEL और CentOS सिस्टम पर, यदि session.save_path
सेट नहीं किया गया है, तो सत्र फ़ाइलों को सहेजा जाएगा/var/lib/php/session
मुझे लगता है कि यदि आप PHP को स्रोत से संकलित करते हैं, तो जब session.save_path
सेट नहीं किया जाता है , तो सत्र फ़ाइलों को सहेजा जाएगा /tmp
(हालांकि मैंने खुद इसका परीक्षण नहीं किया है)।
php.ini
) मेरे सत्र चल रहे हैं/var/lib/php5/sessions
php -i | grep session.save_path
CLI (और शायद अपाचे) सत्र पथ के लिए। इसके अलावा, एक दिया php.ini
सामान्य रूप से 'डिफ़ॉल्ट' पथ दिखाएगा - यह सिर्फ टिप्पणी की गई है।
/tmp
) के रूप में इसके फॉलबैक / डिफॉल्ट मान का उपयोग करेगा। कृपया php.net/manual/en/…
/etc/php/7.0/*/php.ini
-> ;session.save_path = "/var/lib/php/sessions"
- एक टिप्पणी का मतलब यह नहीं है कि 'सेट नहीं है' यह सब मेरा मतलब है। यह स्पष्ट रूप से 'रिक्त' (/ tmp) के अलावा किसी और चीज़ पर सेट है .. और एक खाली / अशक्त स्ट्रिंग नहीं है
यदि संकलित डिफ़ॉल्ट के लिए अनिश्चित है session.save_path
, तो प्रासंगिक को देखें php.ini
।
आम तौर पर, यह टिप्पणी को डिफ़ॉल्ट मान दिखाएगा।
उबंटू / डेबियन पुराने / नए php.ini
स्थान:
अपाचे के साथ /etc/php5/apache2/php.ini
पुराने php5 : NGINX + FPM के साथ पुराने php5:/etc/php5/fpm/php.ini
उबंटू के साथ Ubuntu 16+: /etc/php/*/apache2/php.ini
*
Ubuntu 16+ NGINX + FPM के साथ - /etc/php/*/fpm/php.ini
*
* /*/
: मौजूदा PHP संस्करण (ओं) को सिस्टम पर संस्थापित किया गया है।
Apache के तहत उपयोग में PHP संस्करण दिखाने के लिए :
$ a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+"
7.3
चूंकि PHP 7.3 इस उदाहरण के लिए चलने वाला संस्करण है, आप इसके लिए इसका उपयोग करेंगे php.ini
:
$ grep "session.save_path" /etc/php/7.3/apache2/php.ini
;session.save_path = "/var/lib/php/sessions"
या, संयुक्त एक-लाइनर:
$ APACHEPHPVER=$(a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+") \ && grep ";session.save_path" /etc/php/${APACHEPHPVER}/apache2/php.ini
परिणाम:
;session.save_path = "/var/lib/php/sessions"
या, "cli" वातावरण का उपयोग कर मान को हथियाने के लिए PHP का उपयोग करें ( नोट देखें) नीचे देखें):
$ php -r 'echo session_save_path() . "\n";'
/var/lib/php/sessions
$
ये भी काम करेंगे:
php -i | grep session.save_path
php -r 'echo phpinfo();' | grep session.save_path
ध्यान दें:
php.ini
सामान्य रूप से 'cli' (कमांड लाइन) संस्करण में Apache2 / FPM संस्करण (कम से कम जहाँ तक ) के रूप में एक ही डिफ़ॉल्ट मान हैं session.save_path
। आप वेब सर्वर की वर्तमान PHP मॉड्यूल सेटिंग्स को एक वेबपृष्ठ पर गूँजने के लिए एक समान कमांड का उपयोग कर सकते हैं और जानकारी को हथियाने के लिए wget / कर्ल का उपयोग कर सकते हैं। वहाँ कई पदों हैं के बारे में phpinfo()
इस संबंध में उपयोग। लेकिन, यह सिर्फ PHP इंटरफ़ेस या उपयोग करने के लिए तेज हैgrep
लिए इसके लिए सही php.ini
है कि यह डिफ़ॉल्ट मान है।
EDIT: प्रति @aesede टिप्पणी -> जोड़ा गया php -i
। धन्यवाद
php -i
phpinfo () समकक्ष पाने के लिए CLI में कर सकते हैं
इसके अलावा एक अन्य सामान्य डिफ़ॉल्ट स्थान /tmp/
है/var/lib/php5/
मुझे एक ही सत्र में सत्र के लिए सही रास्ता खोजने में एक ही परेशानी थी। सब सब में, मुझे पता चला कि सीएलआई पीएचपी में अपाचे मॉड्यूल की तुलना में एक अलग अस्थायी निर्देशिका है: अपाचे का उपयोग किया जाता है /var/tmp
, जबकि सीएलआई कुछ ऐसा है /var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T
। लेकिन दोनों तरह से, खाली sys_get_temp_dir()
होने पर मुझे सही रास्ता मिला session.save_path
। PHP 5.5.4 का उपयोग करना।
उपर्युक्त में से किसी ने PHP 7.2 के साथ CentOS 7 के लिए IUS रेपो का उपयोग करते हुए मेरे लिए काम किया:
php -v
> PHP 7.2.30 (cli) (built: Apr 19 2020 00:32:29) ( NTS )
php -r 'echo session_save_path(), "\n";
>
php -r 'echo sys_get_temp_dir(), "\n";'
> /tmp
हालाँकि, सत्र /tmp
फ़ोल्डर में सहेजे नहीं गए थे , लेकिन /var/lib/php/mod_php/session/
फ़ोल्डर में:
ls /var/lib/php/mod_php/session/
> sess_3cebqoq314pcnc2jgqiu840h0k sess_ck5dtaerol28fpctj6nutbn6fn sess_i24lgt2v2l58op5kfmj1k6qb3h sess_nek5q1alop8fkt84gliie91703
> sess_9ff74f4q5ihccnv6com2a8409t sess_dvrt9fmfuolr8bqt9efdpcbj0d sess_igdaksn26hm1s5nfvtjfb53pl7 sess_tgf5b7gkgno8kuvl966l9ce7nn
मेरा मानना है कि यह / tmp / में है। अपने phpinfo फ़ंक्शन की जाँच करें, हालांकि यह सत्र। Save_path को कहीं न कहीं कहना चाहिए।
/tmp
- क्या आप कोई ऐसा जानते हैं? यदि आप स्रोत से PHP का निर्माण करते हैं तो क्या यह मामला है? जब "session.save_path" खाली है तो यह पता लगाना मुश्किल हो सकता है कि फाइलें कहां जाती हैं (इसलिए यह सवाल, मुझे संदेह है)
वर्तमान session.save_path
मूल्य को खोजने के लिए एकमात्र अचूक विकल्प हमेशा phpinfo()
उस वातावरण में जांचना है जहां आप सत्र भंडारण निर्देशिका का पता लगाना चाहते हैं।
कारण: सभी प्रकार की चीजें हो सकती हैं जो session.save_path
या तो php.ini
मूल्य को ओवरराइड करके या रनटाइम के साथ सेट करके बदलती हैं ini_set('session.save_path','/path/to/folder');
। उदाहरण के लिए, वेब सर्वर प्रबंधन पैनल जैसे ISPConfig, Plesk इत्यादि अक्सर प्रत्येक वेबसाइट को सत्र फ़ाइलों के साथ अपनी निर्देशिका देने के लिए इसे अनुकूलित करते हैं।
<?php phpinfo() ?>
और के लिए देखोsession.save_path
।