У меня есть php-скрипт, который ищет каталог openssl и шифрует данные клиента, которые у меня есть.
Когда я загружаю скрипт в мой сетевой каталог linux - шифрование работает нормально
#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";
Когда я пытаюсь запустить ту же команду на моем компьютере с Windows, на котором в настоящий момент работает XAMPP, я не могузашифровать что угодно.У кого-нибудь еще была эта проблема?
Я бы НАМНОГО лучше обновлял и тестировал локально, чем каждый раз, когда я вносил изменения во время нашей сборки, чтобы ftp файл.
РЕДАКТИРОВАТЬ
Iпонять, что каталог выше в основном для Linux;однако даже когда я указываю каталог на каталог openssl в папке XAMPP (для меня это: C: \ xampp \ apache \ bin), операция завершается неудачей.
РЕДАКТИРОВАТЬ 2
Когда я говорю«невозможно зашифровать», я имею в виду, НИЧЕГО не возвращается (т. е. открытые ключи явно не находят файлы openssl .dll), даже если они указывают на правильный каталог.Там нет сообщений об ошибках.Различия в конфигурации?Один из них - сервер Linux, другой - локальный компьютер с Windows.
В моем сценарии я включаю следующее:
<?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"; }
?>
На моем компьютере с ОС Windows И на компьютере с ОС Linux "Ошибка: OPENSSL не найден"отображается (даже если на сервере Linux установлен шифрование в любом случае завершается).Я могу удалить строку на моем компьютере с Windows, просто поместив C: \ xampp \ apache \ bin \ openssl.exe, но это все равно не выполняет никакого шифрования).