【问题标题】:Session Permission Denied on AWS after setting up Cake php.设置 Cake php 后,AWS 上的会话权限被拒绝。
【发布时间】:2014-03-15 20:22:57
【问题描述】:

使用guide 在aws 上使用弹性beantalk 设置cakephp 后,除了以下警告之外,一切都运行良好。

警告 (2): session_start(): open(/var/lib/php/5.5/session/sess_5keql5k987qets4sni1ji44fj3, O_RDWR) 失败:权限被拒绝 (13) [CORE/Cake/Model/Datasource/CakeSession.php, line 628]

我不明白我做错了什么。如果您曾经在 aws 上使用过 cakephp,还请提及我以后可能会遇到的更多问题,或者我是否应该切换到另一个托管站点。谢谢。

【问题讨论】:

    标签: linux session cakephp amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    它与 AWS 无关。当前 Web 服务器用户无权写入会话存储位置。要修复它,您需要执行以下操作之一。

    您可以更改文件夹权限以允许写入或更改 php.ini 中的session.save_path 设置。

    session.save_path 也可以通过ini_setsession_save_path() 在您的代码中更改,但您应该在开始会话之前这样做。

    【讨论】:

      【解决方案2】:

      您需要做的就是在数据库中保存会话。

      1. 转到 /app/Config/core.php 并 更改/添加

        配置::write('Session', array( '默认' => 'php' ));

      Configure::write('Session', array(
              'defaults' => 'database' 
          ));
      

      2。创建表:

      CREATE TABLE IF NOT EXISTS `cake_sessions` (
        `id` varchar(255) NOT NULL,
        `data` text,
        `expires` int(11) DEFAULT NULL,
        PRIMARY KEY (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
      

      就是这样。现在您的会话保存在数据库中,您不需要更改 php.ini 或授予一些权限。

      【讨论】:

      • 其实你错了。我可以建议很多文件权限方法示例。但我个人/主观认为是使用内存缓存(或其他缓存)更节省和更快地使用数据库会话
      • 这不是问题的范围,请参阅接受的答案。
      【解决方案3】:

      虽然其他答案非常有意义并且会起作用,但我的需求要简单得多。我想修改php配置文件,发现these replies on aws's forum - especially the one by alvarolb完美回答了我的问题。

      他发现配置 /etc/httpd/conf.d/php.conf 包含将 php_value session.save_path 覆盖为“/var/lib/php/session”的行。对该行的简单注释和会话完美地工作。

      【讨论】:

        猜你喜欢
        • 2012-01-11
        • 1970-01-01
        • 2020-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-03
        • 2015-05-23
        • 2020-09-06
        相关资源
        最近更新 更多