Laravel 5.7 on apache 错误调用未定义函数 Illuminate\Encryption\openssl_cipher_iv_length()
Posted
技术标签:
【中文标题】Laravel 5.7 on apache 错误调用未定义函数 Illuminate\\Encryption\\openssl_cipher_iv_length()【英文标题】:Laravel 5.7 on apache error Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length()Laravel 5.7 on apache 错误调用未定义函数 Illuminate\Encryption\openssl_cipher_iv_length() 【发布时间】:2019-06-11 22:12:27 【问题描述】:我正在使用 php 7.1.26 在 Apache 2.4 上设置 Laravel 5.7。 我配置了文档之类的所有内容。 但我收到以下错误:
调用未定义函数 Illuminate\Encryption\openssl_cipher_iv_length()
我已经将 PHP 版本更改为 7.2,但什么也没有。 我已经将文件 libeay32.dll 复制到了 Apache,什么都没有
这些是我的 PHP 模块
[PHP 模块] bcmath 日历 核心 ctype 卷曲 日期 dom exif 文件信息 过滤器 gd 获取文本 gmp 哈希 图标v imap 国际 json ldap libxml mbstring mcrypt mysqli mysqlnd odbc openssl pcre PDO PDO_ODBC pdo_pgsql pdo_sqlite pgsql 法尔 阅读线 反射 会话 简单XML 肥皂 插座 声压级 标准 整洁 分词器 wddx xml xmlreader xmlrpc xmlwriter xsl 拉链 zlib
【问题讨论】:
【参考方案1】:尝试重新启动 Apache 服务器。我的问题解决了。
【讨论】:
【参考方案2】:只需从 laravel 安装目录运行 composer update
命令
并确保 extension=php_openssl.dll 在 php.ini 中启用
重新启动 Apache 服务器...
享受:)
【讨论】:
【参考方案3】:我刚刚发现有一个案例我必须在php.ini
中设置 PHP 扩展的完整路径。
当我手动执行 PHP 时,它正确加载了扩展,但是当它通过 apache 时,它试图从错误的路径加载。
extension_dir = "C:\full path for PHP ext\ext"
【讨论】:
经过 2 小时的搜索,我发现这很有帮助。谢谢:)【参考方案4】:openssl_cipher_iv_length()
是来自 OpenSSL 模块的 standard PHP function。您的错误消息说:
undefined function Illuminate\Encryption\openssl_cipher_iv_length()
注意函数名前面是如何以Illuminate\Encryption
开头的——这表明PHP 认为该函数位于Illuminate\Encryption
命名空间中,但事实并非如此。要解决此问题,您可以通过在函数调用前加上反斜杠来显式地将函数调用关联到根命名空间:
\openssl_cipher_iv_length()
这个错误也可能意味着openssl_cipher_iv_length()
在任何地方都不可用,而Illuminate\Encryption
命名空间只是它看到的最后一个地方。在这种情况下,您需要确保已安装 OpenSSL 模块——但请注意,命令行配置与嵌入式 Web 服务器配置不同。即,从命令行运行 php -m
可能会报告 OpenSSL 可用,但可能不会为 Web 服务器版本加载。因此,在您的 Web 服务器提供的页面中运行 phpinfo()
以验证 OpenSSL 确实已加载。
【讨论】:
以上是关于Laravel 5.7 on apache 错误调用未定义函数 Illuminate\Encryption\openssl_cipher_iv_length()的主要内容,如果未能解决你的问题,请参考以下文章
sh 在Ubuntu 16.04上安装Laravel 5.4,MySQL 5.7,Apache2.4和PHP7.1
sh 在Ubuntu 16.04上安装Laravel 5.4,MySQL 5.7,Apache2.4和PHP7.1
Laravel 5.7 ajax 请求 500(内部服务器错误)