设置Cake php后,AWS上的会话权限被拒绝。

时间:2014-02-16 16:17:31

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

使用guide使用弹性beanstalk在aws上设置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,请同时提一下我以后可能会遇到的问题,或者我是否应该切换到另一个托管网站。感谢。

3 个答案:

答案 0 :(得分:2)

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

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

session.save_path也可以通过ini_setsession_save_path()在您的代码中进行更改,但您应该在开始会话之前执行此操作。

答案 1 :(得分:1)

虽然其他人的答案很有道理并且有效,但我的需求要简单得多。我想修改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”。对该行和会话的简单评论非常有效。

答案 2 :(得分:0)

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

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

    配置::写('会话',数组(         'defaults'=> 'PHP'     ));

  2. 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或授予一些权限。