Неверный запрос при запуске действия консоли yii2 - PullRequest
0 голосов
/ 20 мая 2018

Наше приложение запускает консольное действие из внешнего интерфейса, чтобы начать отправку маркетинговой кампании, это работало в течение нескольких лет.

Внезапно мы начали получать неверный запрос при выполнении этого действия консоли.На нашем сервере 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">
            ....
            ....

Вот CampaignController:

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 &");
        }
    }

}

Так что может быть причиной этого плохого запроса?Может быть, какая-то конфигурация PHP была изменена после обновления сервера?

1 Ответ

0 голосов
/ 26 мая 2018

Наконец я узнал, что случилось.Спасибо всем, кто пытался помочь.

Проблема заключалась в том, что PHP 5 Handler на сервере был установлен на suPHP.Установка FastCGI решила проблему.

Кто-нибудь знает почему?

...