Php Symfony\Component\Process\Process无法运行audit2allow

Php Symfony\Component\Process\Process无法运行audit2allow,php,symfony,nginx,process,symfony-process,Php,Symfony,Nginx,Process,Symfony Process,我正在尝试使用Symfony\Component\Process\Process执行audit2allow 当我运行exec时(“audit2allow-a-ma2a”)在PHP中,它工作正常,a2a.pp和a2a.te生成 $process = new Process(['audit2allow', '-a', '-M', 'a2a']); $process->run(); if (!$process->isSuccessful()) { t

我正在尝试使用
Symfony\Component\Process\Process
执行
audit2allow

当我运行exec时(“audit2allow-a-ma2a”)在PHP中,它工作正常,
a2a.pp
a2a.te
生成

    $process = new Process(['audit2allow', '-a', '-M', 'a2a']);
    $process->run();
    if (!$process->isSuccessful()) {
        throw new ProcessFailedException($process);
    }
    echo $process->getOutput();
但是,上面的代码生成下面的输出

Symfony\Component\Process\Exception\ProcessFailedException  : The command "'audit2allow' '-a' '-M' 'a2a'" failed.

Exit Code: 1(General error)

Working directory: /var/www/html/example

Output:
================
compilation failed:
a2a.te:6:ERROR 'syntax error' at token '' on line 6:


/usr/bin/checkmodule:  error(s) encountered while parsing configuration
/usr/bin/checkmodule:  loading policy configuration from a2a.te
这是当存在空
/var/log/audit/audit.log
时的典型输出。 我需要更改什么才能使其正常工作?Symfony声称这不是一个bug。

更新 使用
Symfony\Component\Process\Process
(上面的代码)实际上会生成文件
a2a.te
,但它只有一行

module a2a 1.0;
而使用
exec()
生成包含多行的文件
a2a.te

module a2a 1.0;

require {
        type kernel_t;     
        type vmblock_t;    
        type container_t;  
...

为什么在
Symfony\Component\Process\Process
exec()
上运行相同的命令会产生不同的结果?

输出提示
audi2allow
正在处理的
a2a.te
文件中存在问题。这意味着问题可能是参数或过程本身。就Symfony而言,它完成了它应该做的事情:使用参数运行命令,然后将输出返回给您。命令的所有文件是否都在同一工作目录中,或者您是否有多个副本,但它选择了错误的副本?您是否安装了audit2allow的多个版本,例如。在您的项目中,以及在
/usr/bin
/usr/local/bin
中?在CLI中运行同一命令时会发生什么情况?可能工作目录正在影响您的调用?(自动检测可能会受到PHP或Windows版本的ZTS版本的影响)@dbrumann我在
/usr/bin
@dbrumann中只有1个
audit2allow
,使用PHP与
exec()
运行相同的命令,
Symfony\Component\Process\Process
产生不同的输出,我的说法是Symfony没有正确运行该命令。对我来说,Symfony的不同之处在于它增加了捕获输出和启动/等待/停止进程等功能。因为两者都来自PHP,我假设权限相同。工作文件夹相同,事实上,该命令与文件夹无关
-a
表示从
/var/log/audit.log
读取,而
-M
表示以
a2a
的名称生成模块包