我正在尝试重新启动并运行旧的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
但是我仍然在浏览器中收到相同的消息。
我错过了哪一步?
答案 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 destroy
和vagrant 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
模块并准备使用它。
答案 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配置。