我使用openssl_pkcs7_verify()
(http://www.php.net/manual/en/function.openssl-pkcs7-verify.php)来验证带有smime(p7s)信息的签名邮件内容。这个函数对我来说很有用,但是我想把它用于存储在内存包装器上的内容(php:// memory或php:// temp),openssl_pkcs7_verify()
只接受文件路径作为参数而不是文件指针(如我可以从fopen(' php:// memory',...)获得,我试图使用这段代码:
$filep = fopen('php://memory', 'wb+');
$file_metadata = stream_get_meta_data($filep);
$filename = $file_metadata["uri"];
openssl_pkcs7_verify($filename, PKCS7_NOVERIFY, $filename)
但显然$filename
包含php://memory
,并没有特别提及与fopen
调用相关的内存(而不是$filep
引用的内存),因此代码会生成错误openssl_pkcs7_verify()
无法在参数3上传递的路径上写入。
它迫使我使用临时文件,但在内存内容和文件内容方面可能是一个很大的改进,避免了I / O延迟和其他问题。