我想将创建的会话存储在根目录上方的目录中,除非我使用以下任何一种:
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 创建的 在 /var/www/bootstrap/bootstrap.php 第 25 行
警告:session_start():无法读取会话数据:文件(路径: /var/www/public/../storage/sessions/) 中 /var/www/bootstrap/bootstrap.php 第 25 行
有人可以帮助我吗?
编辑:我的服务器在 PHP 7.1 上运行
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 的用户。
编辑 config/config.yml 并替换 save_path:
session:
save_path: '/tmp'
这对我有用:
sudo chown -R www-data:www-data /var/lib/php/sessions
在 Windows 10 中的 Ubuntu 上,我的 php 用户是我为第一次安装创建的默认用户,我不知道为什么,因为
etc/apache2/envvars
没有这样配置。
没关系,我更改它以快速修复它,现在,它可以工作了。
export APACHE_RUN_USER=rudak
export APACHE_RUN_GROUP=rudak
对我有用的方法也对你有用。
会话似乎出了问题。打开浏览器的 DevTools 并删除所有 Sessioncookie。
我可能是您的会话文件是由另一个用户(以及 UID)创建的,请尝试(重新)从您的临时目录中移动会话文件,例如 /var/tmp
我还用它在 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" );
另一个解决方案:重命名您的会话文件夹 var/session 到 var/session_old
创建一个新文件夹 变量/会话
并删除旧的。
对于lampp用户,
- 转到/opt/lampp/temp/
- 删除会话文件,然后再次测试
再次测试后,
如果显示错误消息 “配置文件的权限错误,不应为全局可写!”,
在终端运行以下命令:
sudo chmod 755 /opt/lampp/phpmyadmin/config.inc.php
这对我有用......
就我而言,我有基于 M1 ARM 的 xampp,如果您有相同的,请按照以下步骤操作
首先找到session.save_path来自 http://localhost/dashboard/phpinfo.php
然后删除所有现有的 会议
我按照上面的方法做了,它成功了
我的解决方案就是擦除会话文件夹的内容。不知道如何或为何有帮助,但确实如此。