当我尝试使用 POST 向包含此行的脚本发出请求时:
$decrypted_data = openssl_decrypt($encrypted_data, 'AES-256-CBC', $key);
我收到以下错误:
致命错误:在第 11 行调用 mypath/usuario_webservice.php 中未定义的函数 openssl_decrypt()
经过一些研究,常见原因是输入了错误的函数名称或 openssl 扩展未安装在我的 Web 服务器上。事实证明,当我向支持人员检查时,它已安装。那么,我还应该寻找什么?
我发布此内容是因为它可能对某些人有帮助。
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
目录中的文件。希望这会有所帮助。
通过删除分号在您的 php.ini 文件中启用此扩展
extension=php_openssl.dll
重新启动您的Apache服务器并重试
希望有帮助:)
我遇到了这个问题,所以我只是使用 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));
?>
为我解决这个问题的方法是将 Apache 从 2.4.27 升级到 2.4.53。
我在 Win64 上使用 Wampserver 3.2.8。 php_openssl 在所有 ini 文件中都处于启用状态。
我确定问题在于重新安装xampp到最新版本,我不知道为什么,但是xampp版本经历了并且我不断收到错误