我也曾经在尝试将 Laravel
部署到 Mac OS Sierra
上的 Apache
时遇到了这个问题。最终,我找到了this post,它提供了逐步解决此问题的说明。这些说明假定您已安装了Homebrew;如果您没有安装它,请将以下内容粘贴到终端窗口中进行安装:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
以下是从上面给出的帖子中复制的相关步骤:
步骤1:安装autoconf和mcrypt
我使用Homebrew来安装autoconf和mcrypt,非常简单:
brew install autoconf mcrypt
如果这对您不起作用,或者您不想使用homebrew,则可以查看此教程。
步骤2:构建PHP扩展
要构建PHP扩展,您需要下载可在此处下载的PHP 5.4.17源代码并提取:
cd ~/Downloads
unzip PHP-5.4.17.zip
然后使用以下命令构建扩展:
cd php-src-PHP-5.4.17/ext/mcrypt/
/usr/bin/phpize
./configure
make
sudo make install
步骤三:启用扩展
现在只需要通过编辑 /etc/php.ini 来启用扩展。如果该文件不存在,请复制 /etc/php.ini.default 并将其重命名:
sudo cp /etc/php.ini.default /etc/php.ini
编辑 /etc/php.ini 文件并添加以下内容:
extension=mcrypt.so
步骤4:重启Apache
现在只需重启Apache,您就完成了!
sudo apachectl restart
附加说明和澄清
在按照这些步骤进行操作时,我遇到了两个问题:
- 我必须将我下载的
PHP
压缩文件与我的计算机上安装的 PHP 版本匹配。
所以我做了。
php -v
确定版本号,然后更改下载以匹配该版本号。在我的情况下,PHP
版本是 5.6.28,因此我需要从以下位置下载 PHP 源代码
https://github.com/php/php-src/archive/PHP-5.6.28.zip
在执行sudo make install
时,我在第二步遇到了一个异常,这个异常是由于El Capitan
添加的安全功能SIP引起的。该异常在this question中有详细描述,而解决此问题的方法则在this answer中找到。
应用来自这个答案的信息更改了上面列出的第二步,并将sudo make install
替换为以下内容:
mkdir -p /usr/local/lib/php/extensions
sudo make EXTENSION_DIR='/usr/local/lib/php/extensions' install
请注意,由于这个更改,上面的第4步也需要更改以包括路径到
mcrypt.so
。因此,以下内容必须放在
php.ini
中:
extension=/usr/local/lib/php/extensions/mcrypt.so
mcrypt
扩展。请记住,您可能有两个PHP配置文件 - 一个用于控制台,另一个用于Web(也就是说,Artisan的“serve”命令实际上可能会调用内置的PHP Web服务器,我怀疑它会使用控制台ini文件,而不是Apache的那个)。一个好的开始是在控制台中尝试php -m
命令,看看这个扩展是否启用。 - halferMCRYPT_RIJNDAEL_128
需要 libmcrypt 2.4 或以上版本。请确认您已满足最低要求。另请参阅手册中的 Mcrypt ciphers。 - jww