我想将创建的会话存储在根目录上的目录中,除非我使用以下任何内容:
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上运行
答案 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
那对我有用...