我有一个二进制文件,它通过将文件内容传递给它cat query.sql | go-mysql-format
来获取我在命令行使用的stdin的输入,但是如何将变量传递给可执行文件?
目前我有
file_put_contents($File = "$_SERVER[DOCUMENT_ROOT]/tmp/" . uuid(), $MySQL);
$o = shell_exec('cat ' . escapeshellarg($File) . ' | go-mysql-format --html');
基本上我想跳过文件创建。
同样重要的是要注意数据将包含换行符,因此我不确定用escapeshellarg
包装变量是否合适
答案 0 :(得分:0)
感谢@NigelRen正确方向指出Array(a,2,true)
我将函数中的步骤包装在一起供我稍后使用,这可能会有所帮助。
proc_open
返回
function exec_stdin(string $Command, string $Data) {
$_ = proc_open($Command, [['pipe', 'r'], ['pipe', 'w'], ['pipe', 'w']], $p);
if (is_resource($_)) {
fwrite($p[0], $Data);
fclose($p[0]);
$o = stream_get_contents($p[1]);
fclose($p[1]);
$_ = proc_close($_);
return $o;
}
return false;
}
var_dump(exec_stdin('go-mysql-format', 'yeet'));
这正是我需要的输出!