我们的应用程序从前端运行控制台操作,开始发送营销活动,这已经工作了几年。
突然间,我们在运行该控制台操作时开始收到错误请求。 我们的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配置被更改了吗?
答案 0 :(得分:0)
最后我发现了什么是错的。感谢所有试图提供帮助的人。
问题是服务器上的 PHP 5处理程序设置为suPHP。 将其设置为FastCGI解决了这个问题。
任何人都知道为什么?