Ben openssl dizinde arar ve ben müşteri verilerini şifreleyen bir php komut dosyası var.
Benim online linux dizinine upload script zaman - şifreleme çalışıyor
#private key file to use
$MY_KEY_FILE = "my-prvkey.pem";
#public certificate file to use
$MY_CERT_FILE = "my-pubcert.pem";
# Paypal's public certificate
$PAYPAL_CERT_FILE = "paypal_cert_sandbox.pem";
# path to the openssl binary
$OPENSSL = "/usr/bin/openssl";
Ben denemek ve şu anda XAMPP bittiğinde benim Windows makinede aynı komutu çalıştırdığınızda, ben bir şey şifrelemek kuramıyorum. Herkesten bu sorun vardı?
Ben daha çok güncelleme ve bir dosyayı ben bizim yapı sırasında bir değişiklik yapmak her zaman ftp var daha lokal test olacaktır.
EDIT
Ben yukarıdaki dizin linux için esas fark yoktur; ancak ben (benim için: C: \ xampp \ apache \ bin) XAMPP klasörü içinde openssl dizin dizin işaret bile işlem başarısız olur.
EDIT 2
Ben "demek şifrelemek mümkün" derken (açık anahtarlar açıkça openssl bulmak değil yani. Dll dosyaları), hiçbir şey onlar doğru dizine işaret olsa bile döndürülür. Hiçbir hata mesajları vardır. Yapılandırma farklar? Bir tek pencere yerel makine, linux sunucu.
Benim komut, ben şunlardır:
<?php
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"; }
if (!file_exists($OPENSSL)) {
echo "ERROR: OPENSSL $OPENSSL not found\n"; }
$openssl_cmd = "$OPENSSL smime -sign -signer $MY_CERT_FILE -inkey $MY_KEY_FILE " . "-outform der -nodetach -binary | $OPENSSL smime -encrypt " . "-des3 -binary -outform pem $PAYPAL_CERT_FILE";
$descriptors = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), );
$process = proc_open($openssl_cmd, $descriptors, $pipes);
if (is_resource($process)) {
foreach ($hash as $key => $value) {
if ($value != "") {
fwrite($pipes[0], "$key=$value\n");
}
}
fflush($pipes[0]);
fclose($pipes[0]);
$output = "";
while (!feof($pipes[1])) {
$output .= fgets($pipes[1]); }
fclose($pipes[1]);
$return_value = proc_close($process);
return $output;
}
return "ERROR"; }
?>
(Linux üzerinde şifreleme zaten tamamlar sunucu barındırılan olsa bile) görüntülenir: benim windows makinede VE linux makine "OpenSSL bulunamadı Hata" On. Ben sadece C koyarak benim windows makinede satırı kaldırabilirsiniz: \ xampp \ apache \ bin \ openssl.exe ama bu yine de herhangi şifreleniyor yapmaz).