मैंने यहाँ और अन्य जगहों पर सब कुछ देखा है, कुछ भी काम नहीं करता है!

यहाँ मुद्दा है:

  • पृष्ठ लोड होने पर, 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
        )

)
0
pycvalade 7 अगस्त 2017, 23:07

3 जवाब

सबसे बढ़िया उत्तर

काफी खोजबीन के बाद पता चला कि यह समस्या का कारण वार्निश कैश है। समस्या सत्र कुकीज़ सेट के बिना पृष्ठ को वार्निश कैशिंग में निहित है, जिससे पृष्ठ को रीफ्रेश करने के बाद इसे बेकार बना दिया जाता है।

सर्वर पर वार्निश को अक्षम करने से मेरे लिए समस्या हल हो गई।

यह उन लोगों के लिए भी पता चला जो वार्निश को सक्रिय रखना पसंद करते हैं लेकिन काम करने के लिए सत्र प्राप्त करते हैं: कैश-कंट्रोल हैडर फिक्स

1
pycvalade 9 अगस्त 2017, 16:54

मौजूदा सत्र को संरक्षित करने के लिए ऐसा करें:

if(session_status() !== PHP_SESSION_ACTIVE) {
    session_start();
}
0
Kai 7 अगस्त 2017, 23:10

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]
}

आशा है कि आप मदद करेंगे

0
Ngannv 16 जून 2018, 11:51