PHP在更新关联数组后退出


PHP quit after I update an associative array

我有一个非常奇怪的问题,我正在做一个脚本,执行symfony命令。

在这里:

<?php
$checkname = 'symfony_checker';
$sensu_ip = '192.168.13.000';
$port = 3002;
function write_to_sensu($json)
{
    echo('writing');
    try
    {
        $fp = fsockopen($sensu_ip, $port, $errno, $errstr, 10);
        if ($fp)
        {
            fwrite($fp, $json);
            fclose($fp);
        }
    }
    catch (Exception $E)
    {
    }
}
ini_set('max_execution_time', 0);
require_once dirname(__DIR__).'/app/bootstrap.php.cache';
require_once dirname(__DIR__).'/app/AppKernel.php';
use Symfony'Bundle'FrameworkBundle'Console'Application;
use Symfony'Component'Console'Input'ArrayInput;
use Symfony'Component'Console'Output'BufferedOutput;
$input = new ArrayInput(array(
    'command'  => 'security:check',
    '--format' => 'json',
));
$output = new BufferedOutput();
$kernel = new AppKernel('dev', true);
$application = new Application($kernel);
$application->setAutoExit(false);
$application->run($input, $output);
$payload = array(
'name' => $checkname,
"status" => 0
);
$payload = json_encode($payload);
$arr = json_decode($output->fetch());
$vulnerabilites = array();
foreach ($arr as $key => $errors)
{
    $var = 0;
    foreach ($errors as $error)
    {
        if ($var == 1)
        {
            foreach ($error as $key => $one)
                array_push($vulnerabilites, $key);
        }
        $var++;
    }
}
$vulnerabilites = implode(' ', $vulnerabilites);
$payload['output'] = 'Vulnerabilities found : ' . $vulnerabilites;
dump($vulnerabilites);
write_to_sensu($payload);

问题是程序在这一行离开:

$payload['output'] = 'Vulnerabilities found : ' . $vulnerabilites;

如果我注释这一行,代码继续很好,并进入我的函数write to sense。如果我只是用一个随机字符串更新$payload['output'],它也不起作用。

每次我尝试更新有效载荷时,程序都会退出!

知道为什么吗?

您正在将$payload转换为具有

行的字符串
$payload = json_encode($payload);

所以你不能再把它当作数组来使用了。要么将json_encode()的结果赋值给另一个变量,要么在转换前更新数组

在尝试添加漏洞之前,您已经将数组编码为JSON。所以你把一个字符串当作一个关联数组。

你只需要移动你的行

$payload = json_encode($payload);

到行后:

$payload['output'] = 'Vulnerabilities found : ' . $vulnerabilites;