Проблемы с OpenSSL на PHP - различное поведение для разных версий

(This question was originally posted on ServerFault - I have deleted it there and moved it here.)

У меня есть машина для разработки под управлением PHP 5.3.5 и рабочая машина под управлением PHP 5.3.8.

Следующий код выполняется на компьютере разработчика:

<?php
$key = "-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0x+2RiQ+LCZNAUcl/Ecf1NrTr
lhjOiHaVC+w/y+UJevqVcDstD22OJGwT13B9T47OuQG9BmzcZQYLcShUMhVD/Owu
9+8PcK51EnBd0lym6+z/WixpnqfQonyKiqq5ytmYKUlUv39J8QQUI2geyvY9VpWS
wyNcFUs7wPl2zsLCPQIDAQAB
-----END PUBLIC KEY-----";

$data = "Hello, world!";

$key1 = openssl_get_publickey($key);
print_r ($key1);
echo "<p>";

$res = openssl_public_encrypt($data, $encrypted_data, $key1, OPENSSL_PKCS1_PADDING);

echo base64_encode($encrypted_data);

На моей машине разработки этот код выводит ресурс и закодированную строку. Я скопировал бы это здесь, но конечно это изменяется каждый раз. На рабочем компьютере этот код создает номер ресурса и следующие ошибки PHP:

PHP Warning:  openssl_public_encrypt(): Don't know how to get public key from this private key in C:\xxx\test.php on line 15
PHP Warning:  openssl_public_encrypt(): key parameter is not a valid public key in C:\xxx\test.php on line 15

К сожалению, на данный момент установка более старой версии PHP на производственном компьютере невозможна из-за запуска других приложений, для которых требуется как минимум 5.3.8.

Поможет ли мне обновление до 5.4.x?

Я знаю, что версия OpenSSL на 5.3.5 - 0.9.8, тогда как версия в 5.3.8 - 1.0.0. Я предполагаю, что там может быть проблема. Есть ли способ обойти это?

Я пытался узнать как можно больше информации на сайте OpenSSL.org и в трекере ошибок PHP, но я не знаю, что я ищу.

С Уважением,

Филипп

Ответы на вопрос(2)

Ваш ответ на вопрос