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