【发布时间】:2021-01-09 04:33:51
【问题描述】:
我的环境:
- XAMPP 版本 7.2.8
- PHP 7.2.8(这是在安装 XAMPP 时一起安装的。)
- Apache 2.4.34(这是在安装 XAMPP 时一起安装的。)
我是 Laravel 的新手。我创建了 Laravel 项目文件夹并执行命令php artisan key:generate 生成app_key。
但我收到以下错误:
PHP Warning: PHP Startup: Unable to load dynamic library 'mcrypt' (tried: C:\xampp\php\ext\mcrypt, C:\xampp\php\ext\php_mcrypt.dll) in Unknown on line 0
我检查了mcrypt 是由以下代码加载的。
<?php
if(function_exists('mcrypt_encrypt')) {
echo "mcrypt is loaded!";
} else {
echo "mcrypt isn't loaded!";
}
?>
它回答了"mcrypt isn't loaded!"。
所以,我按照下面的this instruction 添加mcrypt。
我从this webpage 下载了php-5.2.1-Win32。并复制
libmcrypt.dll 和 php_mcrypt.dll 在那个 php 版本到我的 ext 文件夹。
我编辑了 php.ini 文件如下。
为了检查 php.ini 的位置,我使用phpinfo()。
然后重新启动 Apache 并尝试检查上面的程序是否加载了 mcrypt。但结果是“未加载 mcrypt!”。
我也尝试改变写入php.ini文件的方式如下:
但结果是一样的:“mcrypt 没有加载!”。
我还尝试检查openssl 是否由php -r "echo OPENSSL_VERSION_TEXT;" 启用。但错误发生如下:
Warning: PHP Startup: Unable to load dynamic library 'mcrypt' (tried: C:\xampp\php\ext\mcrypt
所以,我在 php.ini 中注释掉了 mcrypt 扩展。 "php -r "echo OPENSSL_VERSION_TEXT;"" 工作导致 "OpenSSL 1.1.0h 27 Mar 2018"。
【问题讨论】:
-
你能检查一下这实际上是使用的 php.ini 吗?
-
@GabrielA.LópezLópez 用于检查 php.ini 的位置,我使用
phpinfo()并引用了Loaded Configuration File部分。 -
根据php.net/manual/en/install.pecl.windows.php尝试使用extension=php_mcrypt.dll
-
@GabrielA.LópezLópez 我按照你的建议改变了写作方式。但仍然没有加载 mcrypt。
-
对不起,我帮不了你。步骤是取消注释或写入扩展名并重新启动 Apache。要检查的另一件事是扩展是否存储在 php.ini 定义的位置。检查这个,但在 xampp 中不是一个常见问题