PHP सत्र अनुप्रेषित होने के बाद खो गया


132

PHP में रीडायरेक्ट के बाद मैं सत्र खोने की समस्या को कैसे हल करूं?

हाल ही में, मुझे रीडायरेक्ट के बाद सत्र खोने की एक बहुत ही आम समस्या का सामना करना पड़ा। और इस वेबसाइट के माध्यम से खोज करने के बाद भी मुझे कोई हल नहीं मिल रहा है (हालाँकि यह सबसे नज़दीक आया)।

अपडेट करें

मुझे जवाब मिल गया है और मुझे लगा कि मैं इसे यहाँ पोस्ट करूँगा ताकि किसी को भी इसी समस्या का सामना करने में मदद मिल सके।


1
सवाल यह है कि पीएचपी में रीडायरेक्ट के बाद एक सत्र खोने की समस्या को कैसे हल किया जाए। मैंने पहले ही उत्तर का पता लगा लिया, बस इसे यहाँ पोस्ट कर रहा हूँ ताकि अन्य लोगों को पता चल सके। क्योंकि मेरा समाधान StackOverflow पर नहीं है।
दिनुली

2
यह ठीक है, लेकिन यह एक क्यूए साइट है। कृपया अपने प्रश्न को एक प्रश्न बनाएं।
जेरेमी

मैंने देखा कि यह आप से नहीं था। फिर भी, यह साइट सवालों के लिए है, न कि उन सवालों के जवाब के लिए जिन्हें आप पहले से जानते हैं।
आरिस


21
@ यह सच नहीं है, जब लोगों के पास कोडिंग पर सवाल होता है, तो वे मदद के लिए स्टैकऑवरफ़्लो में आते हैं। यदि कोई उत्तर उपलब्ध नहीं है, तो उन्हें वह सहायता नहीं मिल सकती है जिसकी उन्हें आवश्यकता है। मैं वह जवाब देने की कोशिश कर रहा हूं।
दिनुओली

जवाबों:


208

सबसे पहले, इन सामान्य जांचों को करें:

  1. सुनिश्चित करें कि session_start();किसी सत्र को बुलाए जाने से पहले बुलाया जाता है। तो एक सुरक्षित शर्त यह होगी कि इसे अपने पेज की शुरुआत में रखा जाए, इसके तुरंत बाद <?phpकुछ भी करने से पहले घोषणा की जाए। यह भी सुनिश्चित करें कि उद्घाटन की <?phpघोषणा से पहले कोई व्हाट्सएप / टैब नहीं है ।
  2. headerरीडायरेक्ट के बाद , वर्तमान स्क्रिप्ट का उपयोग करके समाप्त करें exit();(अन्य ने भी सुझाव दिया है session_write_close();और session_regenerate_id(true), आप उन लोगों को भी आज़मा सकते हैं, लेकिन मैं उपयोग करूँगा exit();)
  3. सुनिश्चित करें कि जिस ब्राउज़र का आप उपयोग कर रहे हैं, उस पर कुकीज़ को सक्षम किया गया है।
  4. सुनिश्चित करें register_globalsकि यह बंद है, आप इसे php.iniफ़ाइल पर और उपयोग करके भी देख सकते हैं phpinfo()। का संदर्भ लें इस इसे बंद करने के लिए के रूप में।
  5. सुनिश्चित करें कि आपने सत्र नहीं हटाया या खाली नहीं किया
  6. सुनिश्चित करें कि आपके $_SESSIONसुपरग्लोबल सरणी में कुंजी कहीं भी अधिलेखित नहीं है
  7. सुनिश्चित करें कि आप उसी डोमेन पर रीडायरेक्ट करते हैं। इसलिए सत्र को आगे ले जाने के www.yourdomain.comलिए ए से पुनर्निर्देशन yourdomain.comनहीं होता है।
  8. सुनिश्चित करें कि आपकी फ़ाइल एक्सटेंशन है .php(ऐसा होता है!)

अब, ये सबसे आम गलतियाँ हैं, लेकिन अगर उन्होंने इस चाल को नहीं किया, तो समस्या आपकी होस्टिंग कंपनी के साथ होने की संभावना है। यदि सब कुछ localhostआपके दूरस्थ / परीक्षण सर्वर पर नहीं बल्कि काम करता है, तो यह सबसे अधिक संभावना है। इसलिए अपने होस्टिंग प्रदाता के ज्ञानकोष की जांच करें (उनके फ़ोरम आदि को भी आज़माएं)। FatCow और iPage जैसी कंपनियों के लिए, उन्हें आपको निर्दिष्ट करने की आवश्यकता होती है session_save_path। तो इस तरह से:

session_save_path('"your home directory path"/cgi-bin/tmp');
session_start();

("होम डायरेक्टरी पाथ" को अपने वास्तविक होम डाइरेक्टरी पथ से बदलें। यह आमतौर पर आपके कंट्रोल पैनल (या समतुल्य) के भीतर होता है, लेकिन आप test.phpअपनी रूट डायरेक्टरी और टाइप पर एक फाइल भी बना सकते हैं :

<?php echo $_SERVER['SCRIPT_FILENAME']; ?>

'Test.php' से थोड़ा पहले आपका घर निर्देशिका पथ है। और हां, सुनिश्चित करें कि फ़ोल्डर वास्तव में आपके रूट डायरेक्टरी के भीतर मौजूद है। (कुछ प्रोग्राम सिंक्रनाइज़ करते समय खाली फ़ोल्डर अपलोड नहीं करते हैं)


8
बहुत अच्छी तरह से लिखा गया +1, यदि सभी विफल हो जाते हैं, तो बस कुकीज़ का उपयोग करें (बेतरतीब ढंग से एक स्ट्रिंग उत्पन्न करें और इसे डीबी में स्टोर करें और अपने कुकी मूल्य के रूप में उपयोग करें)।
डेव चेन

2
http औरn https के बीच स्विच करना भी एक समस्या हो सकती है stackoverflow.com/questions/441496/…
dev.e.loper

4
ध्यान दें कि php के रूप में 5.4.0 register_globals को हटा दिया गया है, इसलिए यह अब समस्या का कारण नहीं बनेगा
anthonygore

2
वेबसर्वर त्रुटि लॉग की भी जाँच करें; मेरे मामले में, एक त्रुटि थी "सत्र डेटा (फ़ाइलें) लिखने में विफल। कृपया पुष्टि करें कि सत्र की वर्तमान सेटिंग। save_path सही है"। Save_path निर्देशिका पर अनुमतियाँ गलत थीं।
टाइमबोनिकस

किसी भी कारण से सत्र के अलावा मेरे सत्र कहीं और संग्रहीत किए जाएंगे?
जस्टिन

26

हेडर-कॉल के बाद आपको "निकास" का उपयोग करना चाहिए

header('Location: http://www.example.com/?blabla=blubb');
exit;

गेको (जैसे वाटरफॉक्स, फ़ायरफ़ॉक्स, सीमोंकी) के लिए एक बग है जहां अगर कोई डेटा आउटपुट (जैसे echo ' ';) या किसी भी तरह का व्हाट्सएप है तो यह पूरी तरह से लोकेशन हेडर को अनदेखा करेगा।
जॉन

18

मैंने सभी संभव समाधानों की कोशिश की, लेकिन किसी ने मेरे लिए काम नहीं किया! बेशक, मैं एक साझा होस्टिंग सेवा का उपयोग कर रहा हूं।

अंत में, मुझे रीडायरेक्टिंग हेडर के अंदर 'सापेक्ष url' का उपयोग करके समस्या का सामना करना पड़ा!

header("location: http://example.com/index.php")

सत्र कुकीज़ nullified

header("location: index.php")

एक जादू की तरह काम किया !


7

मुझे भी यही समस्या थी। मैंने कई घंटों तक इस पर काम किया और इसने मुझे पागल कर दिया।

मेरे मामले में समस्या 404 थी जो केवल क्रोम और फ़ायरफ़ॉक्स में फ़ेविकॉन.निको के लापता होने के कारण थी । अन्य नाविकों ने ठीक काम किया।


बस इस उत्तर के लिए धन्यवाद देना चाहता था, मुझे एहसास हुआ कि छवियों के लिए 404 अनुरोध वार्निश द्वारा PHP के बिना किसी भी कुकीज़ के लिए अग्रेषित किए जा रहे थे और इस तरह लगातार नए सत्र बनाए जा रहे थे। हो सकता है कि आपके बिना कभी इसका पता न चले।
पास्कल ज़ाजैक

मेरे पास एक ही मुद्दा था, मेरे favicon.ico को पुनर्निर्देशित किया जा रहा था (302 उप-डोमेन से मुख्य डोमेन पर पुनर्निर्देशित) और इस प्रकार, हर बार एक नया सत्र उत्पन्न किया। आपका बहुत बहुत धन्यवाद!
सिमड्रिन

4

जब मैं हेडर के साथ रिश्तेदार पथ "dir / file.php" का उपयोग करता हूं () मेरे लिए काम करता है। मुझे लगता है कि जब आप पूर्ण url का उपयोग करके पुनर्निर्देशित करते हैं तो सत्र किसी कारण से सहेजा नहीं जाता है ...

//Does retain the session info for some reason
header("Location: dir");

//Does not retain the session for some reason
header("Location: https://mywebz.com/dir")

3

इसने मुझे लंबे समय तक रोका (और यह पोस्ट बहुत अच्छी लगी!) लेकिन किसी और के लिए जो अभी भी काम करने के लिए पेज पुनर्निर्देश के बीच सत्र नहीं प्राप्त कर सकता है ... मुझे php.ini फ़ाइल में जाना पड़ा और कुकीज़ चालू करनी पड़ीं :

session.use_cookies = 1 

मुझे लगा कि सत्र कुकीज़ के बिना काम करता है ... वास्तव में मुझे पता है कि वे बहुत अच्छे हैं ... लेकिन इसने मेरी समस्या को कम से कम तब तक ठीक किया जब तक कि मैं समझ नहीं पाता कि बड़ी तस्वीर में क्या हो सकता है।


मुझे नहीं पता था कि सत्र कुकीज़ के बिना काम कर सकते हैं! प्रति दिन कुछ नया सीखें! programmerinterview.com/index.php/php-questions/…
dayuloli

बेशक वे कुकीज़ के बिना काम कर सकते हैं आपके कॉन्फ़िगरेशन पर निर्भर करता है। लेकिन आपको पता होना चाहिए कि आप क्या करते हैं। और ऐसा करने का एक अच्छा कारण है। क्योंकि यह कम सुरक्षित है। और यदि आपको कभी कुकीज़ के बिना कारण के लिए काम करना है। आपको कम से कम ini_set ('session.use_strict_mode', '1') कॉन्फ़िगर करना चाहिए; और आमतौर पर एक छोटे सत्र का समय होता है और उपयोगकर्ता लॉगिन के बाद session_regenerate_id () का उपयोग करते हैं। लेकिन चेतावनी दी जाती है कि यदि कोई उपयोगकर्ता आपके सर्वर पर एक साइट के लिए एक फोरम में एक लिंक पोस्ट करता है, तो जो लोग वास्तव में इस लिंक पर क्लिक करते हैं, वे सत्र का संचालन करेंगे। हो सकता है कि आईपी की जाँच करना भी एक अच्छा विचार है।
माइकल

3

मुझे एक समान समस्या थी, हालांकि मेरा संदर्भ थोड़ा अलग था। मेरे पास एक मशीन पर एक स्थानीय विकास सेटअप था जिसका होस्टनाम windowsऔर आईपी पता था 192.168.56.2

मैं या तो सिस्टम का उपयोग कर सकता है:

लॉग इन करने के बाद, मेरा PHP कोड उपयोग करके पुनर्निर्देशित होगा:

header('http://windows/');

यदि सिस्टम तक पहुँचने के लिए उपयोग किया गया पिछला डोमेन नाम नहीं था windows , तो सत्र डेटा खो जाएगा। मैंने इसे कोड बदलकर हल किया:

header('http://'.$_SERVER['HTTP_HOST'].'/');

अब यह परवाह किए बिना काम करता है कि उपयोगकर्ता कौन सा स्थानीय डोमेन नाम या आईपी पता डालता है।

मुझे उम्मीद है कि यह किसी के लिए उपयोगी हो सकता है।


3

मैं एक विशेष पृष्ठ पर इस मुद्दे में भाग गया। मैं पुनर्निर्देशन से ठीक पहले अन्य पृष्ठों में $ _SESSION मान सेट कर रहा था और सब कुछ ठीक काम कर रहा था। लेकिन यह विशेष पेज काम नहीं कर रहा था।

अंत में मुझे महसूस हुआ कि इस विशेष पृष्ठ में, मैं पृष्ठ की शुरुआत में सत्र को नष्ट कर रहा था, लेकिन इसे फिर से शुरू नहीं कर रहा था। इसलिए मेरा विध्वंस कार्य इससे बदल गया:

function sessionKill(){

    session_destroy();

}

सेवा:

function sessionKill(){

    session_destroy();
    session_start();

}

और सब कुछ काम कर गया!


3

मुझे भी यही समस्या आ रही थी। मेरे सत्र चर के अचानक कुछ अगले पृष्ठ पर नहीं रहेंगे। समस्या निकली (php7.1 में) आपको हेडर स्थान डब्ल्यूडब्ल्यूडब्ल्यू में नहीं होना चाहिए, पूर्व https: // mysite । ठीक है, https: //www.mysite । वह पृष्ठ सत्र चर खो देंगे। सभी नहीं, बस वह पृष्ठ।


ऐसा इसलिए www.mysite.comहै क्योंकि इसे blog.mysite.comकेवल या उससे भी अलग डोमेन के रूप में देखा जाता हैmysite.com
dayuloli

2

मैं कई दिनों से इससे जूझ रहा था, सभी समाधानों की जाँच / कोशिश कर रहा था, लेकिन मेरी समस्या यह थी कि मैं session_start();पुनर्निर्देशित होने के बाद फिर से फोन नहीं कर रहा था । मैंने सिर्फ यह माना कि सत्र 'अभी भी जीवित है' था।

तो यह मत भूलना!


हाँ! यह मेरी समस्या भी थी। मैंने सोचा कि एक PHP सत्र शुरू करना पूरे घर के लिए एक प्रकाश चालू करने जैसा था। मुझे महसूस नहीं हुआ कि आपको प्रत्येक कमरे में प्रवेश करने के लिए स्विच चालू करना होगा।
डेल थॉम्पसन

1

मुझे वही समस्या थी और सबसे आसान तरीका मिला। मैं बस JS के 1 लाइन के साथ एक रीडायरेक्ट .html पर पुनर्निर्देशित कर दिया

<!DOCTYPE html>
<html>
<script type="text/javascript">
<!--
window.location = "admin_index.php";
//–>
</script>
</html>

PHP के बजाय

header_remove();
header('Location: admin_login.php');
die;

आशा है कि ये आपकी मदद करेगा।

प्रेम ग्राम


1

यदि आप उपयोग कर रहे हैं session_set_cookie_params()तो आप जांचना चाहते हैं कि क्या आप चौथे परम $secureको पास कर रहे हैं true। यदि आप हैं, तो आपको https का उपयोग करके url तक पहुंचने की आवश्यकता है।

$secureपरम सत्य का अर्थ है किया जा रहा सत्र एक सुरक्षित अनुरोध के भीतर ही उपलब्ध है। यह आपको चरण या उत्पादन वातावरण की तुलना में स्थानीय रूप से अधिक प्रभावित कर सकता है।

इसका उल्लेख करना क्योंकि मैंने आज का अधिकांश समय इस मुद्दे को खोजने की कोशिश में बिताया है, और यही मेरे लिए इसका हल है। मुझे सिर्फ इस प्रोजेक्ट में जोड़ा गया था और किसी ने उल्लेख नहीं किया कि इसके लिए https आवश्यक है।

तो आप या तो https स्थानीय रूप से उपयोग कर सकते हैं, या आप $secureपरम को FALSEस्थानीय स्तर पर और फिर http का उपयोग करने के लिए सेट कर सकते हैं । जब आप अपने बदलावों को आगे बढ़ाते हैं, तो इसे वापस सही पर सेट करना सुनिश्चित करें।

अपने स्थानीय सर्वर के आधार पर, आपको सर्वर DocumentRootमें संपादन करना पड़ सकता है, httpd-ssl.confताकि आपके स्थानीय यूआरएल को https दिया जा सके।


1

दूसरा संभावित कारण:

वह मेरा सर्वर स्टोरेज स्पेस है। मेरा सर्वर डिस्क स्थान पूर्ण हो गया है। इसलिए, मैंने अपने सर्वर में कुछ फ़ाइलों और फ़ोल्डरों को हटा दिया है और कोशिश की है।

काम हो गया !!!

मैं अपना सत्र AWS डायनमो DB में सहेज रहा हूं, लेकिन यह अभी भी सत्र को संसाधित करने के लिए मेरे सर्वर में कुछ स्थान की उम्मीद करता है। यकीन नहीं है कि क्यों!!!


1

यदि आप लारवेल का उपयोग कर रहे हैं और आप इस मुद्दे का अनुभव करते हैं, तो आपको रीडायरेक्ट करने से पहले अपने सत्र डेटा को सहेजने की आवश्यकता है।

session()->save();
// Redirect the user to the authorization URL.
header('Location: ' . $authorizationUrl);
exit;

0

मेरे पास भी यही समस्या थी कि रीडायरेक्ट काम नहीं कर रहा था और मैंने जो भी समाधान खोजे, उन सभी को आजमाया, मेरे हेडर रीडायरेक्ट का उपयोग एक रूप में किया जा रहा था।

मैंने हेडर को एक अलग php पेज 'signin_action.php' में रीडायरेक्ट करके हल किया और I के मापदंडों के माध्यम से चर मापदंडों को उत्तीर्ण करना चाहता था और फिर उन्हें 'signin_action.php' फॉर्म में पुनः सौंप दिया।

signin.php

if($stmt->num_rows>0) {
$_SESSION['username'] = $_POST['username'];
echo '<script>window.location.href = "http://'.$root.'/includes/functions/signin_action.php?username='.$_SESSION['username'].'";</script>';
error_reporting(E_ALL);

signin_action.php

<?php
require('../../config/init.php');
$_SESSION['username'] = $_GET['username'];
if ($_SESSION['username']) {

echo '<script>window.location.href = "http://'.$root.'/user/index.php";</script>';
exit();
} else {
echo 'Session not set';
}

?>

यह कोई खूबसूरत काम नहीं है।


0

मेरे लिए त्रुटि यह थी कि मैंने सत्र में एक अजेय वस्तु को बचाने की कोशिश की, ताकि सत्र लिखने का प्रयास करते समय एक अपवाद को फेंक दिया गया। लेकिन चूंकि मेरे सभी एरर हैंडलिंग कोड पहले ही किसी भी ऑपरेशन को बंद कर चुके थे, इसलिए मैंने कभी भी त्रुटि नहीं देखी।

मैं इसे अपाचे त्रुटि लॉग में पा सकता हूं, हालांकि।


0

सिर्फ रिकॉर्ड के लिए ... मुझे यह समस्या थी और कुछ घंटों की कोशिश के बाद समस्या यह थी कि डिस्क पूरी भरी हुई थी, और php सत्र tmp निर्देशिका में नहीं लिखे जा सकते थे ... इसलिए यदि आपके पास यह समस्या है भी ...


इस जवाब ने मेरे लिए काम किया। हम nginx के साथ एक अमेज़न मशीन छवि चलाते हैं। ऐसा लगता है कि सत्र फ़ोल्डर सही उपयोगकर्ता (हमारे मामले में www) के स्वामित्व में नहीं है, इसलिए chown -R www.wwwसत्र फ़ोल्डर पर प्रदर्शन समस्या को हल करता है।
जोशुआ

0

मेरे लिए, फ़ायरफ़ॉक्स ने एक कुकी में सत्र आईडी (PHPSESSID) संग्रहीत किया है, लेकिन Google Chrome ने GET या POST पैरामीटर का उपयोग किया है। इसलिए आपको केवल यह सुनिश्चित करना है कि रिटर्न स्क्रिप्ट (मेरे लिए: paypal checkout) url या POST पैरामीटर में PHPSESSID करें।


0

एसओ और अन्य ब्लॉगों पर यहां कई समाधानों की कोशिश करने के बाद ... मेरे लिए जो काम किया गया, वह मेरी वेबसाइट रूट में जोड़ा गया।

RewriteEngine on
RewriteCond %{HTTP_HOST} ^yoursitename.com$
RewriteRule ^.*$ "http\:\/\/www\.yoursitename\.com" [R=301,L]

0

यदि आप Wordpress का उपयोग कर रहे हैं, तो मुझे इस हुक को जोड़ना होगा और init पर सत्र शुरू करना होगा:

function register_my_session() {
    if (!session_id()) {
        session_start();
    }
}
add_action('init', 'register_my_session');

0

मेरे लिए कुछ भी काम नहीं किया, लेकिन मैंने पाया कि समस्या क्या थी (और इसे हल किया):

अपने ब्राउज़र कुकीज़ की जाँच करें और सुनिश्चित करें कि विभिन्न उप-डोमेन पर कोई php सत्र कुकीज़ नहीं हैं (जैसे " www.website.com के लिए एक" और " website.com " के लिए एक )।

यह एक जावास्क्रिप्ट के कारण होता था जो कुकीज़ सेट करने और iframes में पृष्ठों को खोलने के लिए उपडोमेन का गलत तरीके से उपयोग करता था।


0

सबसे पहले, सुनिश्चित करें कि आप चर session_start()का उपयोग करने से पहले कॉल कर रहे हैं $_SESSION

यदि आपने त्रुटि रिपोर्टिंग को अक्षम कर दिया है, तो परिणाम चालू करें और परिणाम देखें।

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

सबसे सामान्य कारण जो @ dayuloli के उत्तर में उल्लिखित नहीं हैं:

  1. डिस्क स्थान की समस्या। सुनिश्चित करें कि आपका डिस्क स्थान भरा हुआ नहीं है, आपको सत्र फ़ाइलों को संग्रहीत करने के लिए कुछ स्थान की आवश्यकता है।

  2. सत्र निर्देशिका लेखन योग्य नहीं हो सकती है। आप इससे जांच कर सकते हैंis_writable(session_save_path())


0

मुझे भी यही समस्या हो रही थी और मैं जवाब के लिए अपने कोड में नट्स खोज रहा था। अंत में मैंने पाया कि मेरे होस्टिंग ने हाल ही में अपने सर्वर पर PHP संस्करण को अपडेट किया है और फ़ाइल session_save_pathपर पैरामीटर ठीक से सेट नहीं किया है php.ini

इसलिए, यदि कोई इसे पढ़ता है, तो कृपया php.iniकिसी अन्य चीज़ से पहले कॉन्फ़िगरेशन की जांच करें ।


0

सुनिश्चित करें कि जब आप अपना सत्र सेट करते हैं, तो session_write_closeबीच में नहीं बुलाया जाता है session_start()

session_start();

[...]

session_write_close();

[...]

$_SESSION['name']='Bob'; //<-- won't save

0

अब जब GDPR एक चीज है, तो इस सवाल पर जाने वाले लोग शायद एक कुकी स्क्रिप्ट का उपयोग करें। खैर, उस स्क्रिप्ट ने मेरे लिए परेशानी खड़ी कर दी। जाहिर है, PHP PHPSESSIDसत्र को ट्रैक करने के लिए एक कुकी का उपयोग करता है । यदि वह स्क्रिप्ट इसे हटा देती है, तो आप अपना डेटा खो देते हैं।

मैंने इस कुकी स्क्रिप्ट का उपयोग किया । इसमें "आवश्यक" कुकीज़ को सक्षम करने का विकल्प है। मैंने PHPSESSIDसूची में जोड़ा , स्क्रिप्ट ने कुकी को हटाना बंद कर दिया, और सब कुछ फिर से काम करना शुरू हो गया।

आप शायद का उपयोग कर से बचने के लिए कुछ पीएचपी सेटिंग को सक्षम कर सकता है PHPSESSID, लेकिन अगर आपकी कुकी स्क्रिप्ट समस्या का कारण है, क्यों ठीक नहीं है कि


0

मैंने डिबगिंग के कई दिनों के बाद इस समस्या को ठीक किया और यह सब इसलिए था क्योंकि पेपल एक्सप्रेस चेकआउट से आने वाले मेरे रिटर्न यूआरएल में 'www' नहीं था। क्रोम ने माना कि डोमेन को एक ही माना जाना चाहिए लेकिन अन्य ब्राउज़र कभी-कभी नहीं होते हैं। सत्र / कुकीज़ और पूर्ण पथों का उपयोग करते समय, 'www' को न भूलें!


0

मैंने समूह लिखने की अनुमति उस मार्ग से दी जहां PHP स्टोर सेशन फाइलें होती हैं। आप session_save_path () फ़ंक्शन के साथ सत्र पथ पा सकते हैं।


0

आज मुझे एक परियोजना में यह समस्या थी और मुझे इस पैरामीटर को गलत (या लाइनों को हटाने के लिए, डिफ़ॉल्ट रूप से अक्षम किया गया है) में बदलना पड़ा:

ini_set( 'session.cookie_secure', 1 );

ऐसा इसलिए हुआ क्योंकि वास्तविक परियोजना http और केवल https पर काम करती है। डॉक्स http://php.net/manual/en/session.security.ini.php में अधिक जानकारी मिली


0
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));
session_start();

जवाब देने में बहुत देर हो गई लेकिन यह मेरे लिए काम कर गया


0

मेरे लिए यह अनुमति त्रुटि थी और इसने इसे हल किया:

chown -R nginx: nginx / var / opt / remi / php73 / lib / php / session

मैंने पीएचपी पर कुछ घंटों का परीक्षण किया है और मैंने जो आखिरी परीक्षण किया, वह यह था कि मैंने दो फाइलें session1.php और session2.php बनाई थीं।

session1.php:

session_start();

$_SESSION["user"] = 123;

header("Location: session2.php");

session2.php:

session_start();

print_r($_SESSION);

और यह एक खाली सरणी मुद्रित कर रहा था।

इस बिंदु पर, मुझे लगा कि यह एक सर्वर मुद्दा हो सकता है और वास्तव में, यह था।

आशा है कि यह किसी की मदद करता है।


1
चाउड एक BAD समाधान है, क्योंकि इसे पैकेज अपडेट पर डिफ़ॉल्ट मान में बदल दिया जाएगा। डिफ़ॉल्ट पूल कॉन्फ़िगरेशन (www.conf) में टिप्पणियां देखें। उचित तरीका अगर अपाचे से एक और निर्देशिका का उपयोग करें (उदा: / var / lib / php / nginx / session)
रेमी कोलेट

तुम सही हो। पैकेज अद्यतन पहली बार में मेरी समस्या का कारण था। लेकिन जब से यह तरीका किया गया है और मुझे इसके शीघ्र समाधान की आवश्यकता है। मेरे SYS व्यवस्थापक ने इसे हल किया, मैं लिनक्स के साथ अच्छा नहीं हूँ।
टेम्पो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.