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
的名称生成模块包