调用未定义的函数openssl_decrypt

时间:2015-01-14 18:57:09

标签: php openssl php-openssl

当我尝试使用POST向具有以下行的脚本发出请求时:

$decrypted_data = openssl_decrypt($encrypted_data, 'AES-256-CBC', $key);

我收到以下错误:

  

致命错误:在第11行的mypath / usuario_webservice.php中调用未定义的函数openssl_decrypt()

经过一些研究后,常见的原因是输入了错误的函数名称,或者我的Web服务器上没有安装openssl扩展名。事实证明,它是在我检查支持时安装的。那么,我还应该寻找什么?

3 个答案:

答案 0 :(得分:10)

我发布此信息,因为它可能会对某些人有帮助。

  • extension=php_openssl.dll中启用了php.ini
  • extension_dir
  • 中正确指出了php.ini

如果你最近升级了你的php版本而不是你的Apache,则可能无法读取正确的libeay32.dllssleay32.dll,这是openssl的要求或某些版本不匹配正在发生

  • 获取libeay32.dllssleay32.dll的最新版本,或者从您的php目录中复制C:\php并覆盖Apache \ bin中C:\Apache24\bin目录中的文件。

希望这会有所帮助。

答案 1 :(得分:2)

通过删除分号

php.ini 文件中启用此扩展程序
extension=php_openssl.dll

重新启动 Apache 服务器并重试
希望有所帮助:)

答案 2 :(得分:1)

我遇到了这个问题所以我只是使用了phptclib的Crypt_AES:

<?php
include('Crypt/AES.php');

$cipher = new Crypt_AES(); // it's cbc by default
$cipher->setKeyLength(256);
$cipher->setKey('abcdefghijklmnopijklmnopqrstuvwxyz3456');

$size = 10 * 1024;
$plaintext = str_repeat('a', $size);

echo $cipher->decrypt($cipher->encrypt($plaintext));
?>