1

我有一个我正在处理的 CakePHP 2.x 站点,该站点按预期在本地运行。登录有效,会话闪存消息有效,等等。当我将代码推送到我的登台/生产服务器时,它正在中断。

登录不再起作用,没有会话闪烁消息出现,一些应该重定向到 /user/login 的控制器操作没有显示任何内容(空文档)等。

我不知道会出现什么问题。根据我遇到的问题和我所做的一些搜索,我相信我已经排除了关闭?>纯代码 PHP 文件(控制器)后出现的空格等问题。我正在使用数据库会话,并且我看到在本地实例的数据库中创建了会话记录,但在远程登台/生产实例上却没有。

任何帮助将不胜感激。谢谢。

4

2 回答 2

2

在你的 app/Config/core.php 中检查这些东西。

  1. 如果您使用基于 SSL 和非 SSL 的协议,请确保将 cookie_secure 设置为 false。

    Configure::write('Session', array(
       'defaults' => 'php',
       'ini' => array(
           'session.cookie_secure' => false
       )
    ));
    
  2. 尝试将 Session 的配置从 php defaults 更改为 cake 或 db as

    Configure::write('Session', array(
        'defaults' => 'php', // change 'php' to 'cake' or 'database'
        'cookie' => 'my_app',
        'timeout' => 4320 //3 days
    ));
    
  3. 还尝试将Session.checkAgent设置为 false,仅一次以确保它是否是浏览器问题。

  4. 尝试更改会话的Session.name,默认为“CAKEPHP”

    Configure::write('Session', array(
        'name' => 'New-Session-name'
        'defaults' => 'php', // change 'php' to 'cake' or 'database'
        'cookie' => 'my_app',
        'timeout' => 4320 //3 days
    ));
    
  5. 从 /app/tmp 的所有子目录中删除所有缓存文件

  6. 将调试级别设置为 1,以进行缓存刷新。如果您仍然没有看到错误,请尝试在 php.ini 中将 error_reporting 设置为 true。(虽然,这个很明显,我仍然指出它,以防你可能错过了它)

希望这可以帮助

于 2013-03-08T05:12:29.197 回答
2

我经常遇到的建议之一是确保在纯代码文件中的结束 PHP 标记之后没有空格(或者最好实际上没有结束 PHP 标记)。检查我所有的文件表明情况确实如此。然而,不知何故,我设法在打开 PHP 标记之前放置了一个换行符AppController.php,这就是问题所在。我向任何在这件事上浪费时间的人道歉。我只是希望这对将来笨拙地犯同样错误的人有所帮助。

于 2013-03-11T20:01:10.467 回答