我正在使用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
答案 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服务器。我的问题解决了。