1

使用弹性豆茎使用guide在aws上设置cakephp之后,除了以下警告外,所有内容都可以很好地工作。设置Cake php之后会话权限在AWS上被拒绝。

警告(2):在session_start():打开(/var/lib/php/5.5/session/sess_5keql5k987qets4sni1ji44fj3,O_RDWR)失败:权限被拒绝(13)[CORE /蛋糕/型号/数据源/ CakeSession.php, line 628]

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

回答

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

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

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

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

0

所有你需要做的是在数据库中保存会话。

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

    配置::写入( '会话',阵列( '缺省'=> '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或提供一些权限。

+0

其实你错了。我可以建议很多文件权限方法的例子。但是我的个人/主体思想是使用memcache(或其他缓存)更节省和更快速地使用数据库会话 – 2014-02-21 06:58:25

+0

这不是问题的范围,请参阅接受的答案。 – AD7six

+0

你还没有明白。没关系 – 2014-02-21 07:05:15