MAMP 下多版本 PHP 开发环境中,运行 Laravel 内 PHP artisan 命令提示 “Mcrypt PHP extension required” 的解决办法

我在自己的开发机上是利用 MAMP 来搭建 PHP 环境的。今天遇到的问题是在一个以 Laravel 4.2 为基础的旧项目上执行 php artisan 命令时被提示“Mcrypt PHP extension required.”,而我利用 phpinfo() 查看时却发现 Mcrypt 扩展已经就绪。当时就怀疑是 MAMP 下多个 PHP 版本共存造成的问题,上网搜索后得到解决方案如下:

注:我的开发机是 Mac mini,然后利用 MAMP 内置的 CGI 方式为不同的项目指定不同的 PHP 版本,所以这些不同的 PHP 安装在目录 /Applications/MAMP/bin/php/ 内。

首先,运行一下命令 which php,此时你看到的应该类似“/usr/local/bin/php”,这就是你的命令行目前所启用的 PHP 所在的位置,这里只是让你看一下,后边就明白了。

然后,通过命令行编辑 ~/.bash_profile 文件,修改其中的 PATH 变量。我的 .bash_profile 内容如下:

# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}" 
export PATH

在此基础上,我新增了一行:

PATH="/Applications/MAMP/bin/php/php5.5.26/bin:${PATH}"

最终得到:

# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}" 
PATH="/Applications/MAMP/bin/php/php5.5.26/bin:${PATH}"
export PATH

编辑完成,保存并退出。

然后,关闭当前的命令行窗口,再重新打开它。此时请再执行一下命令 which php,你现在看到的输出应该就变成“/Applications/MAMP/bin/php/php5.5.26/bin/php”了吧。

之后,再执行 php artisan 命令应该就没问题了,至少我所遇到是这样。

本帖已被设为精华帖!
本帖由 Summer 于 7年前 加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

之前也有遇到过类似的问题,不过那次是因为php artisan用的是cli,去cli的配置文件里开启扩展就解决了

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!