如何在Laravel Homestead中启用php-Mcrypt扩展

时间:2019-07-18 21:45:31

标签: laravel homestead mcrypt

我正在尝试重新启动并运行旧的Laravel 4.1.x应用程序,以便可以对其进行现代化。这需要具有PHP 5.6和Mcrypt扩展的环境。我已经安装了Homestead 9.0.3(最新的稳定版本)。在虚拟机中,我将PHP版本设置为5.6

sudo update-alternatives --config php

然后我已经安装了php-mcrypt扩展

sudo apt-get install php5.6-mcrypt

我现在能够创建一个新的Laravel 4.1.x项目,该过程需要Mcrypt才能完成,因此我们肯定会有所成就:

composer create-project laravel/laravel="4.1.*" myAppName

但是,当我浏览至myAppName网页时,看到以下消息:

需要Mcrypt PHP扩展。

我还尝试了通常建议用于此问题的步骤,即:

sudo ln -s /etc/php/5.6/conf.d/mcrypt.ini /etc/php/5.6/mods-available/mcrypt.ini
sudo phpenmod mcrypt
sudo service php5.6-fpm restart

但是我仍然在浏览器中收到相同的消息。

我错过了哪一步?

3 个答案:

答案 0 :(得分:1)

使用 homestead v9 ,您应该按照以下说明开箱运行 php5.6 here,但不幸的是,这不是您的情况,据我所知...

如前所述,默认情况下未安装旧软件包(php5.6-mcrypt),应通过以下方式手动添加: sudo apt-get install php5.6-mcrypt

之后,所有软件包都准备就绪,可以正常使用,尤其是php5.6-mcrypt。

问题的根源在于homestead.yaml下的多个站点定义。 其中最有可能是重叠的,并且您的nginx指的是错误的 resource / site_definition 错误的路径

因此,您可能会认为运行/执行了一些奇怪的php版本或路由。

您可以通过删除部分/全部来验证是否保留唯一对您重要的一项-(/ etc / nginx / sites-enabled/...)。

当然请在容器内执行此操作,然后发出sudo service nginx restart ...

此后,您所有的问题都将消失。

如果出现问题。之后,您可以使用vagrant destroyvagrant up轻松地将当前安装恢复到当前状态,因为所有内容都保存在Homestead.yaml中。

在我的安装中,Homestead v9在laravel 4.1上与php5.6一起运行时没有任何问题...

希望它对@jsm有帮助...

答案 1 :(得分:0)

要安装所需的软件包,请运行以下命令:

sudo apt install php-dev libmcrypt-dev php-pear

运行以下命令以使用mcrypt频道安装PHP pecl模块:

sudo pecl channel-update pecl.php.net
sudo pecl install mcrypt-1.0.1

运行上述命令后,您应该看到一条消息,提示已成功安装php mcrypt模块,并且您应在mcrypt.so文件中包含php.ini扩展名:

Build process completed successfully
Installing '/usr/lib/php/20170718/mcrypt.so'
install ok: channel://pecl.php.net/mcrypt-1.0.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=mcrypt.so" to php.ini

最后,运行以下命令以打开PHP配置文件:

sudo nano /etc/php/7.2/cli/php.ini

然后将以下行添加到文件中,就在PHP下方并保存: extension=mcrypt.so

保存文件即可完成。

如果要使用具有PHP支持的Apache2 HTTP服务器,则可能还希望将mcrypt.so扩展名添加到下面的php.ini文件中:

sudo nano /etc/php/7.2/apache2/php.ini

对于Nginx,请使用此:

sudo nano /etc/php/7.2/fpm/php.ini

现在应该安装mcrypt模块并准备使用它。

Reference

答案 2 :(得分:0)

由于所有安装在homestead上的PHP版本,您需要在Homestead.yaml中为站点设置PHP版本。

首先检查服务器在phpinfo();上运行哪个版本

检查文件/etc/nginx/sites-enabled/homestead.test并查找以下行:

fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;

如果未在站点列表中设置php版本,则此文件将指向php7.3.sock。 在这种情况下,版本5.6已安装mcrypt,但版本7.3未安装。

您可以替换行

fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;

fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;

,然后用sudo nginx -s reload重新加载nginx。

或在Homestead.yaml上设置php版本:

sites:
- map: homestead.test
  to: /home/vagrant/code/public
  php: "5.6"

然后运行vagrant设置,它将更改PHP 5.6的nginx配置。