如何使这个OpenSSL命令开始工作?

时间:2016-01-15 03:42:16

标签: php openssl

我的OpenSSL命令无效,我正在通过php的exec()函数运行。

输出的错误是" 1"。

OpenSSL已启用并正常工作。

这是命令:

$openssl_cmd = "($OPENSSL smime -sign -signer $MY_CERT_FILE -inkey $MY_KEY_FILE " .
                                    "-outform der -nodetach -binary <<_EOF_\n$data\n_EOF_\n) | " .
                                    "$OPENSSL smime -encrypt -des3 -binary -outform pem $PAYPAL_CERT_FILE";
                exec($openssl_cmd, $output, $error);

我正在运行最新版本的XAMPP并在Windows 10上运行。

提前致谢!

编辑:

输出为die($ openssl_cmd)时,这是完整的命令;在php:

(C:/xampp/apache/bin/openssl.exe smime -sign -signer C:\xampp\[redacted]\paypal\pubcert.pem -inkey C:\xampp\[redacted]\paypal\prvkey.pem -outform der -nodetach -binary <<_EOF_ cmd=_xclick amount=[redacted] item_number=[redacted] discount_rate=0 item_name=[redacted] notify_url=https://www.REDACTED.net/paypal/ipn business=REDACTED cert_id=REDACTED currency_code=USD no_shipping=1 bn=domain.PHP_EWP2 _EOF_ ) | C:/xampp/apache/bin/openssl.exe smime -encrypt -des3 -binary -outform pem C:\xampp\[redacted]\paypal\paypal_cert.pem

编辑: 我使用https://www.stellarwebsolutions.com/en/articles/paypal_button_encryption_php.php作为指南。

1 个答案:

答案 0 :(得分:1)

要在Windows中执行Linux样式的命令,使用管道和文件重定向,可以使用Windows PowerShell运行该命令。

例如,在这种情况下,您可以通过PowerShell执行类似于此的操作来执行它:

poewrshell -Command "(C:/xampp/apache/bin/openssl.exe smime -sign -signer C:\xampp\[redacted]\paypal\pubcert.pem -inkey C:\xampp\[redacted]\paypal\prvkey.pem -outform der -nodetach -binary <<_EOF_ cmd=_xclick amount=[redacted] item_number=[redacted] discount_rate=0 item_name=[redacted] notify_url=https://www.REDACTED.net/paypal/ipn business=tomekandres@live.ca cert_id=REDACTED currency_code=USD no_shipping=1 bn=domain.PHP_EWP2 _EOF_ ) | C:/xampp/apache/bin/openssl.exe smime -encrypt -des3 -binary -outform pem C:\xampp\[redacted]\paypal\paypal_cert.pem"