运行yii2控制台操作时请求错误

运行yii2控制台操作时请求错误,yii2,console-application,bad-request,Yii2,Console Application,Bad Request,我们的应用程序从前端运行一个控制台操作,开始发送一个营销活动,这已经运行了几年 在运行控制台操作时,我们突然收到一个错误的请求。 我们的Linux服务器上发生了一些更新,这些更新可能与应用程序行为的这种变化有关 我们将该操作的输出重定向到一个文本文件,在该文件中我们看到以下行: Status: 400 Bad Request X-Powered-By: PHP/5.6.30 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-

我们的应用程序从前端运行一个控制台操作,开始发送一个营销活动,这已经运行了几年

在运行控制台操作时,我们突然收到一个错误的请求。 我们的Linux服务器上发生了一些更新,这些更新可能与应用程序行为的这种变化有关

我们将该操作的输出重定向到一个文本文件,在该文件中我们看到以下行:

    Status: 400 Bad Request
    X-Powered-By: PHP/5.6.30
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Content-Type: text/html; charset=UTF-8


    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8"/>
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <meta name="csrf-param" content="_csrf">
            ....
            ....
那么,这一错误请求的原因是什么呢?
可能是服务器更新后更改了某些PHP配置吗?

最后我发现了问题所在。谢谢所有试图帮忙的人

问题是服务器上的PHP5处理程序被设置为suPHP。 将其设置为FastCGI解决了这个问题


有人知道为什么吗?

你试过查看日志吗?是的,我查看了日志,但确实找不到任何有用的东西
400错误请求
是一个非常普遍的错误,很难说原因是什么。你没有任何日志,没有显示任何代码,基于如此有限的信息,不太可能有人能够帮助你。你是对的,我编辑了我的问题以添加相关代码。当我在我的windows dev计算机上本地测试此问题时,它运行良好,但在服务器上似乎会在某个点重定向,重定向导致了这个错误的请求错误
class CampaignController {

    public function actionUpdate($id) {
        $this->startSending($id, 1);
        die('only start sending, no more....');
    }

    private function startSending($campaign_id, $test = 0) {
        $siteUrl = \Yii::$app->urlManager->hostInfo . \Yii::$app->urlManager->baseUrl;

        $php = PHP_BINARY;

        $appDir = \Yii::getAlias('@app');
        $i = strrpos($appDir, 'frontend');
        $yiiDir = substr($appDir, 0, $i - 1);
        $outputFile = $yiiDir . "/console_output/send-campaign-$campaign_id-$test.html";

        $cmd = "php $yiiDir/yii send-campaign/send $campaign_id $siteUrl $test";

        $isWindwos = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false;

        if ($isWindwos) {
            pclose(popen("start /b $cmd > $outputFile", 'r'));
        } else {
            pclose(popen("$cmd  &>$outputFile &", 'r'));
            //exec($cmd . " &>$outputFile &");
        }
    }

}