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

Linux 设置php后AWS上的会话权限被拒绝。,linux,session,cakephp,amazon-web-services,amazon-elastic-beanstalk,Linux,Session,Cakephp,Amazon Web Services,Amazon Elastic Beanstalk,在aws上使用elastic beanstalk使用设置cakephp之后,除了以下警告之外,一切都工作得很好 警告(2):session_start():打开(/var/lib/php/5.5/session/sess_5keql5k987qets4sni1ji44fj3,O_RDWR)失败:权限被拒绝(13)[CORE/Cake/Model/Datasource/CakeSession.php,第628行] 我不明白我做错了什么。如果您曾经在aws上使用过cakephp,请同时提及我以后是否

在aws上使用elastic beanstalk使用设置cakephp之后,除了以下警告之外,一切都工作得很好

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


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

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

您可以更改文件夹权限以允许写入,也可以更改php.ini中的
会话.save_path
设置


session.save\u path
也可以通过
ini\u set
或使用
session\u save\u path()
在代码中进行更改,但您应该在启动会话之前执行此操作。

您需要执行的所有操作都是在数据库中进行保存会话

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

    配置::写入('Session',数组( “默认值”=>“php” ));

  • 二,。创建表:

    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或授予某些权限。

    尽管其他答案非常有意义并且可以工作,但我的需求要简单得多。我想修改php配置文件,我发现这完美地回答了我的问题


    他发现/etc/httpd/conf.d/php.conf配置文件中包含一行,该行覆盖了php_value session.save_路径到“/var/lib/php/session”。对该行和会话的简单注释非常有效

    其实你错了。我可以推荐许多文件权限方法示例。但我个人/主观的想法是,使用memcache(或其他缓存)进行更节省、使用更快的数据库会话。这不在问题的范围之内,请参阅公认的答案。
    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;