我正在使用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
相关的内存的特定引用(而不是引用的内存),因此代码会生成一个错误,即无法在参数 3 上传递的路径上写入。它迫使我使用临时文件,但可能是极大地改进了内存内容而非文件内容的使用,避免了 I/O 延迟和其他问题。fopen
$filep
openssl_pkcs7_verify()