Encrypter.php中未定义的函数openssl_encrypt()

Encrypter.php中未定义的函数openssl_encrypt(),php,laravel,laravel-5.3,php-openssl,Php,Laravel,Laravel 5.3,Php Openssl,我得到以下错误: 调用Encrypter.php第73行中未定义的函数openssl_encrypt() 这似乎很明显,但OpenSSL扩展在我的配置中已启用,只有在使用artisan serve查看配置并启用时,才会发生此错误 进行了一些研究: 在artisan文件中复制了以下代码 $loaded = extension_loaded('openssl'); var_dump($loaded);die(); 它返回true。但是当我将相同的代码复制到/public/index.php中时,它

我得到以下错误:

调用Encrypter.php第73行中未定义的函数openssl_encrypt()

这似乎很明显,但OpenSSL扩展在我的配置中已启用,只有在使用
artisan serve
查看配置并启用时,才会发生此错误

进行了一些研究: 在
artisan
文件中复制了以下代码

$loaded = extension_loaded('openssl');
var_dump($loaded);die();
它返回
true
。但是当我将相同的代码复制到
/public/index.php
中时,它返回
false

因此,我假设在
php cli
中启用了
openssl
扩展,但由于某种原因,它在到达引导文件后被禁用


*如果有人感兴趣,我会使用UniServer。

在Windows上的Apache 2.4、PHP7和Fresh Laravel 5.3上也有同样的问题。 我的Apache错误日志显示

"PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\wamp\\php\\ext\\php_openssl.dll' - The operating system cannot run %1.\r\n in Unknown on line 0"

通过将libeay32.dll和ssleay32.dll从PHP根文件夹复制到Apache/bin文件夹并重新启动Apache来修复此问题。

您在哪里执行了“die(var_dump($loaded));”命令?在artisan文件中,我猜您使用了命令行界面来执行artisan命令。我怀疑您的cli和cgi配置不同。你能从浏览器中执行phpinfo()吗(在我强烈建议你使用phpinfo()并在那里找到openssl之后的第一行,看看它是否真的“启用”了不同的SAPI有不同的php.ini文件是很正常的。“将libeay32.dll和ssleay32.dll从php根文件夹复制到Apache/bin文件夹并重新启动Apache”解决了我的问题。