Laravel 5.7关于Apache错误调用未定义函数Illuminate \ Encryption \ openssl_cipher_iv_length()

时间:2019-01-17 16:43:37

标签: php laravel openssl

我正在使用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
  fileinfo
  过滤器
  gd
  gettext
  gmp
  哈希
  iconv
  imap
  国际
  json
  ldap
  libxml
  mbstring
  mcrypt
  mysqli
  mysqlnd
  odbc
  openssl
  pcre
  PDO
  PDO_ODBC
  pdo_pgsql
  pdo_sqlite
  pgsql
  法尔
  readline
  反思
  会议
  SimpleXML
  肥皂
  插座
  SPL
  标准
  整洁
  标记器
  wddx
  xml
  xmlreader
  xmlrpc
  xmlwriter
  xsl
  拉链
  zlib

4 个答案:

答案 0 :(得分:1)

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服务器版本加载。因此,在您的网络服务器提供的页面中运行phpinfo(),以验证是否确实加载了OpenSSL。

答案 1 :(得分:1)

只需从laravel安装目录运行composer update命令 并确保在php.ini中启用了 extension = php_openssl.dll

重新启动Apache服务器...

享受:)

答案 2 :(得分:0)

我刚刚发现有一种情况,我必须在php.ini中为PHP扩展设置完整路径。

当我手动执行PHP时,它正确地加载了扩展,但是当通过apache时,它试图从错误的路径加载。

extension_dir = "C:\full path for PHP ext\ext"

答案 3 :(得分:0)

尝试重新启动Apache服务器。我的问题解决了。