Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP session handling errors

Tags:

php

session

I have this at the very top of my send.php file:

ob_start();
@session_start();

//some display stuff

$_SESSION['id'] = $id; //$id has a value
header('location: test.php');

And the following at the very top of my test.php file:

ob_start();
@session_start();

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

print_r($_SESSION);

When the data sends to test.php, the following is displayed:

Array ( )

Warning: Unknown: open(/var/lib/php/session/sess_isu2r2bqudeosqvpoo8a67oj02, O_RDWR) failed: Permission denied (13) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

I've tried only using session_start(); but the results are the same.

like image 830
g2avityhitz Avatar asked Feb 24 '11 11:02

g2avityhitz


2 Answers

Look at your message

So first thing it relate to permission

open(/var/lib/php/session/sess_isu2r2bqudeosqvpoo8a67oj02, O_RDWR) failed: Permission denied (13) in Unknown on line 0

you have to check file permission change mode this /var/lib/php/session/

Second thing it relate to session.save_path

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

in php.ini

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
; 
; As of PHP 4.0.1, you can define the path as:
; 
;     session.save_path = "N;/path"
; 
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
; 
; NOTE 1: PHP will not create this directory structure automatically.
;         You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
;         use subdirectories for session storage
;
session.save_path = /tmp/    <= HERE YOU HAVE TO MAKE SURE

; Whether to use cookies.
session.use_cookies = 1
like image 156
kn3l Avatar answered Sep 20 '22 16:09

kn3l


you have to change your session.save_path setting to the accessible dir, /tmp/ for example

How to change: http://php.net/session_save_path

Being on the shared host, it is advised to set your session save path inside of your home directory but below document root

also note that

  • using ob_start is unnecessary here,
  • and I am sure you put @ operator by accident and already going to remove it forever, don't you?
like image 15
Your Common Sense Avatar answered Sep 20 '22 16:09

Your Common Sense