session_start():您的uid不会创建会话数据文件

时间:2017-01-20 19:59:45

标签: php session

我想将创建的会话存储在根目录上的目录中,除非我使用以下任何内容:

    session_save_path($_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions');
    session_save_path($_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions/'); // With an extra slash at the end
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions');
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions/'); // Again with the extra slash

并且这些方法中没有一种工作,每当我加载页面时,我都会遇到以下错误:

  

警告:session_start():您的uid不会创建会话数据文件   在第25行的/var/www/bootstrap/bootstrap.php中

     

警告:session_start():无法读取会话数据:文件(路径:   /var/www/public/../storage/sessions/)in   第25行/var/www/bootstrap/bootstrap.php

任何人都可以帮助我吗?

编辑:我的服务器在PHP 7.1上运行

8 个答案:

答案 0 :(得分:7)

PHP要求会话文件由运行PHP的用户拥有。

然后只需运行chown -R www-data:www-data /var/www/storage/sessions/以拥有会话文件夹和PHP用户的文件(www-data:www-data是您的PHP用户和由:分隔的组)。

您可以使用PHP方法get_current_user()或在bash php -i | grep user中运行,并找到在那里运行PHP的用户。

答案 1 :(得分:1)

我可能是你的Session文件是由另一个用户创建的(好的UID),尝试(重新)移动临时目录中的会话文件,比如/ var / tmp

答案 2 :(得分:1)

我用它来在php中制作命名管道

<?php
$user = get_current_user();   // get current process user

// We need to modify the permissions so users can write to it

exec( "chown -R {$user}:{$user} $fifoPath" );    

答案 3 :(得分:1)

这对我有用:

sudo chown -R www-data:www-data /var/lib/php/sessions 

答案 4 :(得分:1)

对我有用的东西,也可能对您有用。

会话似乎出了点问题。打开浏览器的DevTools并删除所有Sessioncookie。

答案 5 :(得分:0)

另一种解决方案:重命名会话文件夹 var / session to var / session_old

创建一个新文件夹 VAR /会话

并删除旧的。

答案 6 :(得分:0)

在Windows 10中的Ubuntu上,我的php用户是我为首次安装创建的默认用户,我不知道为什么,因为etc/apache2/envvars的配置不是这样。

没关系,我迅速对其进行了更改以进行修复,现在它可以正常工作了。

export APACHE_RUN_USER=rudak
export APACHE_RUN_GROUP=rudak

答案 7 :(得分:0)

对于 lampp 用户,
-转到/ opt / lampp / temp /
-删除会话文件,然后再次测试

再次测试后,
如果显示错误消息“对配置文件的权限错误,应该是不可写的!”
在终端上运行以下命令:
sudo chmod 755 /opt/lampp/phpmyadmin/config.inc.php

那对我有用...