在我的PHP脚本中,我有一个变量$pkcs7_bin
,我想通过openssl
进行转换。
假设我在文件中输入了内容,则可以使用bash进行此操作:
cat in.pkcs7 | openssl pkcs7 -inform DER > out.pkcs7
我想在PHP中做同样的事情,例如:
$exit_status execute('openssl pkc7 -inform DER', $pkcs7_bin, $pkcs7_out);
我当然不想使用中间文件。
这是一种简单的方法吗?
目前我已经写过:
function execute($process, $stdin, &$stdout)
{
ob_start();
$handle = popen($process, 'w');
$write = fwrite($handle, $stdin)
&$stdout = ob_get_clean();
pclose($handle);
}
但是我意识到ob_start
:(
答案 0 :(得分:-1)
Other places I've seen(and here too)似乎都为此目的使用了fread()和fwrite()。否需要ob_start()。
ob_start()
用于output buffering,这完全是另外一回事。
答案 1 :(得分:-1)
对于控制台命令的一般用法,您需要使用shell_exec()
-通过shell执行命令并以字符串形式返回完整输出
请注意,在您的用例中,PHP提供的OpenSSL函数可以“本机”完成您需要做的事情,而不必担心生成外壳程序(出于安全原因通常被禁用)
无论如何,回到shell_exec():
cat in.pkcs7 | openssl pkcs7 -inform DER > out.pkcs7
可以按照 //以某种方式获取输入数据。你可以 // shell_exec使用正确的原始命令 //文件路径,然后使用file_get_contents()读出.pkcs7 $ infile = file_get_contents(“ / path / to / in.pcks7”); $ result = shell_exec(“ echo”。$ infile。“ | openssl pcks7-通知DER”);
5月/将/确实需要与"
和'
进行周刊处理,以处理$infile
内容中的特殊字符。将$infile
更改为您将要发送的任何输入,只要有需要,请确保正确引用/转义。