在设置Cake php后,会话权限被拒绝。

使用指南 ,使用弹性beanstalk在aws上设置cakephp之后,除了下面的警告,所有的东西都是完美的。

警告(2):session_start():open(/var/lib/php/5.5/session/sess_5keql5k987qets4sni1ji44fj3,O_RDWR)失败:Permission denied(13)[CORE / Cake / Model / Datasource / CakeSession.php,628行]

我不明白我做错了什么。 如果你曾经使用过cakephp,那么还请提及是否有更多的问题,我可能会遇到,或者如果我应该切换到另一个托pipe网站。 谢谢。

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

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

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

虽然其他答案是完全合理的,而且会起作用,但是我的需求要简单得多。 我想修改php的配置文件,我发现这些答复在aws的论坛 – 尤其是由alvarolb的回答我的问题完美。

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

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

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

    Configure :: write('Session',array('defaults'=>'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或者给一些权限。