我在我send.php
文件的最顶部有这个:
ob_start();
@session_start();
//some display stuff
$_SESSION['id'] = $id; //$id has a value
header('location: test.php');
Run Code Online (Sandbox Code Playgroud)
以下是我的test.php文件的最顶层:
ob_start();
@session_start();
error_reporting(E_ALL);
ini_set('display_errors', '1');
print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)
数据发送到时test.php
,显示以下内容:
Array ( )
警告:未知:打开(/ var/lib/php/session/sess_isu2r2bqudeosqvpoo8a67oj02,O_RDWR)失败:第0行的未知权限被拒绝(13)
警告:未知:无法写入会话数据(文件).请在第0行的Unknown中验证session.save_path的当前设置是否正确(/ var/lib/php/session)
我只尝试过使用session_start(); 但结果是一样的.
kn3*_*n3l 31
看看你的消息
首先,它涉及到许可
/var/lib/php/session/
你必须检查文件权限更改模式 session.save_path
它涉及的第二件事/var/lib/php/session/
session.save_path
在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
Run Code Online (Sandbox Code Playgroud)
You*_*nse 15
你有你的更改session.save_path
设置的访问目录,/tmp/
例如
如何更改:http://php.net/session_save_path
作为共享主机,建议在主目录内但在文档根目录下设置会话保存路径
还要注意
这是PHP版本中的一个已知错误.根据您的服务器环境,您可以尝试将sessions文件夹设置为777:
/var/lib/php/session
(您的位置可能有所不同)
我最终使用了这个解决方法:
session_save_path('/path/not/accessable_to_world/sessions');
ini_set('session.gc_probability', 1);
Run Code Online (Sandbox Code Playgroud)
您必须创建此文件夹并使其可写.我没有多少搞乱权限,但777为我工作(显然).
确保世界无法访问您存储会话的位置.
这个解决方案可能不适用于所有人,但我希望它可以帮助一些人!
您可以通过以下步骤解决该问题:
sudo cd /var/lib/php/session
。如果它不存在,则sudo mkdir /var/lib/php/session
或仔细检查日志以确保您具有正确的路径。sudo chmod 666 /var/lib/php/session
。重新运行您的脚本,它应该可以正常工作,但是,不建议保留该文件夹的完全权限。为了安全起见,文件和文件夹应该只具有所需的最低权限。以下步骤将解决该问题:
sudo ls -l
即可找出会话文件的所有者。sudo chown user /var/lib/php/session
。sudo chmod 600 /var/lib/php/session
。注意
您可能不需要使用该sudo
命令。
小智 5
转到您的PHP.ini
文件或PHP.ini EZConfig
在您的文件上找到Cpanel
并将您设置session.save_path
为通向该tmp
文件的完整路径,即:/home/cpanelusername/tmp
归档时间: |
|
查看次数: |
159193 次 |
最近记录: |