私は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()