使用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,请同时提一下我以后可能会遇到的问题,或者我是否应该切换到另一个托管网站。感谢。
答案 0 :(得分:2)
它与AWS无关。当前Web服务器用户无权写入会话存储位置。要解决此问题,您需要执行以下操作之一。
您可以更改文件夹权限以允许编写或更改php.ini中的session.save_path
设置。
session.save_path
也可以通过ini_set
或session_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)
您需要做的就是在数据库中保存会话。
转到/app/Config/core.php和 更改/添加
配置::写('会话',数组( '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或授予一些权限。