【问题标题】:$request variable empty after a post发布后 $request 变量为空
【发布时间】:2025-12-01 05:10:01
【问题描述】:

我在 CakePHP 上遇到了这个奇怪的问题,当我尝试在本地登录我的网站管理 (/users/login) 时,我输入了我的用户名和密码并且工作正常 但是在我将它上传到远程服务器后,相同的代码,sambe 数据库将不允许用户登录,它说用户名/密码无效,但几个小时后试图弄清楚发生了什么我发现FormAuthenticate.php 的 authenticate 方法中的变量 $request 基本上是空的,它像这样进入远程服务器:

object(CakeRequest) {
    params => array(
        'plugin' => null,
        'controller' => 'users',
        'action' => 'login',
        'named' => array(),
        'pass' => array()
    )
    data => array()
    query => array()
    url => 'users/login/'
    base => ''
    webroot => '/'
    here => '/users/login/'
}

但是,在本地运行的同一页面返回:

object(CakeRequest) {
    params => array(
        'plugin' => null,
        'controller' => 'users',
        'action' => 'login',
        'named' => array(),
        'pass' => array()
    )
    data => array(
        'User' => array(
            'password' => '*****',
            'username' => 'admin'
        )
    )
    query => array()
    url => 'users/login/'
    base => ''
    webroot => '/'
    here => '/users/login/'
}

我试图找到可能导致此问题的任何原因,但仍然没有运气,我是 CakePHP 的新手,所以我可能会遗漏一些东西,谢谢!!


更新 #1,这是我的 UserController::login 方法

public function login() {
        $this->layout = 'default_admin';
        if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash(__('Invalid username or password, try again'));
            }
        }
    }

更新 #2:我使用 chrome 的开发人员工具将表单方法从“post”更改为“get”,然后在 UserController::login() 上更改为: ... if ($this->request->is('get')) { ... 然后它工作了,但我需要它与“post”方法一起工作=\

【问题讨论】:

  • 您能与我们分享您的UsersController::login() 方法吗?
  • @Jelmer 我刚刚用方法更新了我的问题,提前谢谢!

标签: php cakephp cakephp-2.2


【解决方案1】:

事实证明服务器需要重新启动。我已经包含这两行来测试 .htaccess 文件中的 fileupload 组件:

php_value upload_max_filesize 9999999999M

php_value post_max_size 9999999999M

然后它开始像上面描述的那样奇怪,所以我决定重新启动服务器并收到以下错误消息:

“PHP 警告:POST Content-Length of XXX bytes 超出了 Unknown on line 0 中 -XXX bytes 的限制”

谷歌搜索我发现它与文件大小有关,所以我决定将值从“9999999999M”更改为“2147483647”并重新启动服务器和一切现在工作正常。

很抱歉出现这样的菜鸟错误,我对 PHP 和 Cake 真的很陌生,我以为每次上传新文件时都不必重新启动服务器。

【讨论】:

  • 您上传的是什么类型的文件?因为您在上传文件时不必重新启动服务器。至少,我以前从来没有这样做过。还是您正在编辑 php.ini 文件?
  • @Jelmer 确实我编辑了 php.ini,所以这就是我必须重新启动服务器的原因?我不知道这个非常感谢=D
  • 是的。因为 Apache 需要“重新读取”​​文件。如果它没有重新启动它就不会:) 也许重新加载会做,但我不太确定。