如何在脚本中将PHP指向OpenSSL目录?

我有一个PHP脚本,需要指向我的服务器openssl目录,但我迷路了。 我知道目录驻留在/ usr / bin / openssl,而我的网站页面位于/var/www/vhosts/domain/httpdocs/test.php。

在test.php中,我尝试使用/ usr / bin / openssl中的相对path调用openssl目录,但是我知道这是一个问题。 任何人都可以帮忙吗?

正试图调用openssl进行证书encryption的PHP脚本:

<?php 

//之前在文件$ operatingos被设置为true或false的基础上的操作系统。
如果(!$ operateos){

 #PRIVATE KEY FILE $MY_KEY_FILE = "my-prvkey.pem"; #PUBLIC KEY FILE $MY_CERT_FILE = "my-pubcert.pem"; #PAYPAL PUBLIC CERTIFICATE if(!$testingservices) { $PAYPAL_CERT_FILE = "paypal_cert.pem"; //LIVE } else { $PAYPAL_CERT_FILE = "paypal_cert_sandbox.pem"; //SANDBOX } #PATH TO OPENSSL BINARY $OPENSSL = "/usr/bin/openssl"; 

} else {

 #PRIVATE KEY FILE $MY_KEY_FILE = "C:\\xampp\\htdocs\\privkey.pem"; #PUBLIC KEY FILE $MY_CERT_FILE = "C:\\xampp\\htdocs\\pubcert.pempem"; #PAYPAL PUBLIC CERTIFICATE if(!$testingservices) { $PAYPAL_CERT_FILE = "C:\\xampp\\htdocs\\pppubcert.pem"; } else { $PAYPAL_CERT_FILE = "C:\\xampp\\htdocs\\pppubcert_sandbox.pem"; } #PATH TO OPENSSL BINARY $OPENSSL = "C:\\OpenSSL-Win32\\bin\\openssl.exe"; 

}

 $form = array('cmd' => '_xclick', 'business' => 'email', 'cert_id' => 'certid', 'lc' => 'US', 'custom' => 'test', 'invoice' => '', 'currency_code' => 'USD', 'no_shipping' => '1', 'item_name' => 'Donation', 'item_number' => '1', 'amount' => '10' ); $encrypted = paypal_encrypt($form); function paypal_encrypt($hash) { global $MY_KEY_FILE; global $MY_CERT_FILE; global $PAYPAL_CERT_FILE; global $OPENSSL; if (!file_exists($MY_KEY_FILE)) { echo "ERROR: MY_KEY_FILE $MY_KEY_FILE not found\n"; } if (!file_exists($MY_CERT_FILE)) { echo "ERROR: MY_CERT_FILE $MY_CERT_FILE not found\n"; } if (!file_exists($PAYPAL_CERT_FILE)) { echo "ERROR: PAYPAL_CERT_FILE $PAYPAL_CERT_FILE not found\n"; } //Assign Build Notation for PayPal Support $hash['bn']= 'domain.PHP_EWP2'; $data = ""; foreach ($hash as $key => $value) { if ($value != "") { //echo "Adding to blob: $key=$value\n"; $data .= "$key=$value\n"; } } $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); if (!$error) { return implode("\n",$output); } else { return "ERROR: encryption failed"; } }; ?> 

Windows和Linux系统之间的目录结构有所不同。 相当愚蠢的我的一部分,但在Windows目录中的双斜杠是必需的