调用未定义的函数openssl_decrypt

问题描述 投票:0回答:5

当我尝试使用 POST 向包含此行的脚本发出请求时:

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

我收到以下错误:

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

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

php openssl php-openssl
5个回答
15
投票

我发布此内容是因为它可能对某些人有帮助。

  • 检查您的
    extension=php_openssl.dll
    中已启用
    php.ini
  • 检查
    extension_dir
    是否正确指向
    php.ini

如果您最近升级了 php 版本而不是 Apache 版本,那么可能无法读取正确的

libeay32.dll
ssleay32.dll
,这是 openssl 的要求或发生了某些版本不匹配。

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

希望这会有所帮助。


3
投票

通过删除分号在您的 php.ini 文件中启用此扩展

extension=php_openssl.dll

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


2
投票

我遇到了这个问题,所以我只是使用 phpseclib 的 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));
?>

1
投票

为我解决这个问题的方法是将 Apache 从 2.4.27 升级到 2.4.53。

我在 Win64 上使用 Wampserver 3.2.8。 php_openssl 在所有 ini 文件中都处于启用状态。


0
投票

我确定问题在于重新安装xampp到最新版本,我不知道为什么,但是xampp版本经历了并且我不断收到错误

© www.soinside.com 2019 - 2024. All rights reserved.