PHP Şifreleme openssl_pkcs7_encrypt () başarısız

2 Cevap php

Hey all, I have this code:

 $fp = fopen($unenc_path, "w");
 fwrite($fp, $msg);
 fclose($fp);

 $easy_access_emails = 'person@##.com';
 $headers =   "From: support@##.com <support@##.com>\n" . 
              "Reply-to: support@##.com\n" . 
              "Subject: " . $subject . "\n";

 $key = implode("", file("../newcert.pem"));

 $ArrayMessageProperties = explode("\n", $headers);

 $unenc_path = '..\\tmp\\'. preg_replace('/[^0-9]/','', microtime()) . rand(0,1000) . "msg.txt";
 $enc_path = '..\\tmp\\'. preg_replace('/[^0-9]/','', microtime()) . rand(0,1000) . "enc.txt";

 if (openssl_pkcs7_encrypt($unenc_path, $enc_path, $key, $ArrayMessageProperties))
 {
    $info = file_get_contents($enc_path);

    foreach ($easy_access_emails as $email)
    {
         mail($email, $subject, $info, $headers);
    }
} else {
    die("Failed Encryption");
}

Hangi (Macbook LAMBASI çalıştıran) benim yerel dev ortamında düzgün çalışır. Ben test için bir windows sunucuya taşındı ve şimdi openssl_pkcs7_encrypt her zaman başarısız olur. Ben fonksiyon $ enc_path yazmak gerekiyor çünkü bu, bir izin sorunu olduğunu varsayalım; ama ben mümkün olduğunca açık hakkında windows sunucu üzerindeki dizin yaptık. (Onunla ilgisi olabilir hemen her kullanıcı / grup tam kontrolünü ayarlayın. Herkes bu hata ayıklamak için iyi bir yöntem biliyor musunuz? Bu neden olarak hiçbir gösterge ile başarısız olduğunda işlevi sadece döndürür false görünür.

Araştırmamız sonucunda bu komut dizinine erişmek yazmak etti görünür. Bu, hiçbir sorun unenc_path $ yazıyor sadece openssl_pkcs7_encrypt için çağrı başarısız olur.

Başka güncelleme: Ben bazı isteği izlemek için FileMon kullanıyorum ve i şifresiz dosyaya açma ve yazma görmek ama bu bile şifreli dosyaya yazmak için çalıştıkları için hiçbir çıkış yoktur.

Ayrıca anahtarı yükler satırı eklendi. Ben bunu yankılanan tarafından bu kadar yükleme doğrulanmadı ettik ve iyi görünüyor.

Başka güncelleme: sefer ben bunu windows tmp dizininde şifrelenmemiş mesajın arıyor ki bir giriş görüyorum openssq_pkcs7_encrypt çağrı gerektiğini, yine FileMon izliyorum.

w3wp.exe:4172  C:\windows\system32\tmp\04277530010012336..msg.txt    PATH NOT FOUND  Options: Open Access: Read

2 Cevap

Windows / openssl_pkcs7_encrypt düzelttim biraz ileri ve ters eğik çizgi (/. \) Ile karıştırmasını sonra tam yolunu vererek, bu göreli bir yol gibi değildi çıktı.

Eğer $key yere kod anahtarı yüklüyorsunuz? Ben pasajı üzerinde göremiyorum