【问题标题】:session_start(): Session data file is not created by your uidsession_start():会话数据文件不是由您的 uid 创建的
【发布时间】:2020-01-06 01:53:54
【问题描述】:

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

    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 上运行

【问题讨论】:

  • 是linux用户权限错误;确保您能够读取/写入这些位置(文件夹应为 0755,文件应为 0644),并且您的用户有权读取这些位置。
  • 我怎样才能知道哪个用户想要访问这些位置?并且更改权限是正确的?
  • 我已经尝试了上述所有解决方案,更改文件夹文件夹,为会话创建另一个文件夹,通过 redis 管理会话,没有任何效果,这解决了我离开 session.auto_start = 1 的问题表示启用,在 php.ini

标签: php session


【解决方案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。

【讨论】:

  • 在我的情况下,/var/www/storage/sessions/ 目录不存在,/usr/local/var/www/storage/sessions/ 目录也不存在。是的,我在 mac。同样在创建上述目录并尝试更改所有权或它显示的目录chown: www-data: illegal group name
  • 在我重新启动我的mac之前它曾经可以工作,现在它停止工作了
【解决方案2】:

编辑 config/config.yml 并替换 save_path:

session:
    save_path: '/tmp'

【讨论】:

    【解决方案3】:

    这对我有用:

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

    【讨论】:

    • 感谢您的努力,但请仔细阅读问题:OP 想要使用自定义会话 save_path。您的答案可能适用于默认设置,但与此问题无关。
    【解决方案4】:

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

    没关系,我更改它以快速修复它,现在它可以工作了。

    export APACHE_RUN_USER=rudak
    export APACHE_RUN_GROUP=rudak
    

    【讨论】:

      【解决方案5】:

      对我有用的,也对你有用。

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

      【讨论】:

        【解决方案6】:

        我可能是您的会话文件是由另一个用户(以及 UID)创建的,请尝试(重新)从您的临时目录中移动会话文件,例如 /var/tmp

        【讨论】:

          【解决方案7】:

          我也用它在 php 中制作 Named Pipes

          <?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" );    
          

          【讨论】:

            【解决方案8】:

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

            创建一个新文件夹 变量/会话

            并删除旧的。

            【讨论】:

              【解决方案9】:

              对于 lampp 用户,
              - 转到 /opt/lampp/temp/
              - 删除会话文件,重新测试

              再次测试后,
              如果显示错误消息 “Wrong permissions on configuration file, should not be world writable!”
              在终端运行以下命令:
              sudo chmod 755 /opt/lampp/phpmyadmin/config.inc.php

              这对我有用...

              【讨论】:

                猜你喜欢
                • 2017-02-20
                • 2019-05-11
                • 1970-01-01
                • 1970-01-01
                • 2017-10-05
                • 2017-05-20
                • 1970-01-01
                • 1970-01-01
                • 2013-04-01
                相关资源
                最近更新 更多