yii2 - 运行 yii2 控制台操作时出现错误请求
问题描述
我们的应用程序从前端运行控制台操作以开始发送营销活动,这已经工作了几年。
突然,在运行该控制台操作时,我们开始收到一个错误的请求。我们的 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 配置吗?
解决方案
最后我发现出了什么问题。感谢所有试图提供帮助的人。
问题是服务器上的PHP 5 处理程序设置为 suPHP。将其设置为 FastCGI 解决了该问题。
有谁知道为什么?
推荐阅读
- javascript - javascript条件包含闪亮的条件面板
- amazon-web-services - 具有 Cognito 授权的 AWS API 网关即使使用无效的 id 令牌也不会阻止请求
- reactjs - 在 axion 请求中使用 url 的参数
- reactjs - analytics().logEvent() 返回 null 并且不在控制台中跟踪事件
- javascript - 某些事件后不要在 Angular 中刷新视图
- pki - 无法清理 PKI,找不到错误文件:CADescription
- python - Python网页抓取:抓取后无法写入文件
- asn.1 - 字符串在 OSS ASN1 解码中被截断
- java - 为什么这会给我这个输出?
- lua - 如何将字符串转换为表格?