मैंने यहाँ और अन्य जगहों पर सब कुछ देखा है, कुछ भी काम नहीं करता है!
यहाँ मुद्दा है:
- पृष्ठ लोड होने पर,
session_start()
पर कॉल करने पर, मुझे एक PHP सत्र आईडी असाइन की जाती है। - एक बार जब मैं पृष्ठ को रीफ्रेश करता हूं, तो मुझे एक नया सत्र आईडी मिलता है और इससे
$_SESSION
चर खाली हो जाता है।
पीएचपी संस्करण है: 5.6.30-0+deb8u1
मैंने आवेदन के बाहर दोहराने के लिए एक छोटी सी लिपि की:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo '<pre>';
echo 'orig session.cookie_domain = '.ini_get('session.cookie_domain').PHP_EOL;
echo 'orig session.cookie_secure = '.ini_get('session.cookie_secure').PHP_EOL;
ini_set('session.cookie_domain', '.mydomain.com');
ini_set('session.cookie_secure', 'Off');
echo 'new session.cookie_domain = '.ini_get('session.cookie_domain').PHP_EOL;
echo 'new session.cookie_secure = '.ini_get('session.cookie_secure').PHP_EOL;
echo '-------------'.PHP_EOL;
print_r($_COOKIE);
session_start();
print_r($_COOKIE);
setcookie(ini_get('session.name'), session_id(), 0, '/', ini_get('session.cookie_domain'), false, false);
print_r($_COOKIE);
echo '-------------'.PHP_EOL;
echo 'session id: '.session_id().PHP_EOL;
echo '-------------'.PHP_EOL;
$_SESSION[session_id()][] = date('Y-m-d H:i:s');
print_r($_SESSION);
echo '</pre>';
//phpinfo();
स्क्रिप्ट का आउटपुट है:
orig session.cookie_domain =
orig session.cookie_secure =
new session.cookie_domain = .mydomain.com
new session.cookie_secure = Off
-------------
Array
(
[__cfduid] => ddxxx
[_ga] => GA1.2.xxxx
[wp-settings-time-2] => 1500996194
[_gid] => GA1.3.xxxx
)
Array
(
[__cfduid] => ddxxx
[_ga] => GA1.2.xxxx
[wp-settings-time-2] => 1500996194
[_gid] => GA1.3.xxxx
)
Array
(
[__cfduid] => ddxxx
[_ga] => GA1.2.xxxx
[wp-settings-time-2] => 1500996194
[_gid] => GA1.3.xxxx
)
-------------
session id: 7n4mm16s525mpqo99r242p90l3
-------------
Array
(
[7n4mm16s525mpqo99r242p90l3] => Array
(
[0] => 2017-08-07 16:01:18
)
)
3 जवाब
काफी खोजबीन के बाद पता चला कि यह समस्या का कारण वार्निश कैश है। समस्या सत्र कुकीज़ सेट के बिना पृष्ठ को वार्निश कैशिंग में निहित है, जिससे पृष्ठ को रीफ्रेश करने के बाद इसे बेकार बना दिया जाता है।
सर्वर पर वार्निश को अक्षम करने से मेरे लिए समस्या हल हो गई।
यह उन लोगों के लिए भी पता चला जो वार्निश को सक्रिय रखना पसंद करते हैं लेकिन काम करने के लिए सत्र प्राप्त करते हैं: कैश-कंट्रोल हैडर फिक्स
मौजूदा सत्र को संरक्षित करने के लिए ऐसा करें:
if(session_status() !== PHP_SESSION_ACTIVE) {
session_start();
}
Php फ़ाइल में is_writable(session_save_path ()) जांचें:
<?php
if (!is_writable(session_save_path())) {
echo 'Session path "'.session_save_path().'" is not writable for PHP!';
// you need set chmod -R 777 [session save path folder]
}
आशा है कि आप मदद करेंगे
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।