优胜美地/岩石阵 php-gd + mcrypt 安装

51

如何在Yosemite 10.10 - PHP 5.5.14中安装/启用php-gd和mcrypt?

请注意,以下步骤会安装最新的PHP 5.5.x版本

使用$ php -m来检查gd和mcrypt是否已经安装并编译为模块。如果缺少所需的模块,请参阅接受的答案


GD

因此,苹果公司已经安装了GD(您正在使用他们的PHP构建版本,这是可以的),但没有包含对PNG的支持。

如果缺少“完整”的带png支持的gd模块,则一定会缺少imagecreatefrompng()函数。

"Call to undefined function imagecreatefrompng()"

enter image description here


Mcrypt

使用接受的答案安装brew,省略gd安装部分(除非您需要),并按以下步骤操作:

  1. 搜索- $ brew search mcrypt
  2. 选择您想要的PHP版本
  3. 安装- $ brew install php55-mcrypt
  4. 使用$ php -m | grep mcrypt进行确认

想要在PHP版本之间切换?

请查看brew-php-switcher并按照说明操作。


我相信GD应该默认与PHP一起安装在Yosemite上。您是否有多个PHP副本?您可以通过在Web服务器上使用phpinfo()检查正在使用哪个“php”,并将其与which php的输出进行比较吗? - ItalyPaleAle
你好,那行代码输出 /usr/bin/php - Kyslik
所以,苹果安装了GD(你正在使用他们的PHP版本,这很好),但没有包括对PNG的支持。让我看看能否使其工作。 - ItalyPaleAle
是的,我正在使用苹果自带的PHP,并按照这个教程http://coolestguidesontheplanet.com/install-mcrypt-php-mac-osx-10-10-yosemite-development-server/安装/编译了mcrypt。 - Kyslik
是的,我原本也要建议类似的解决方案。不过,由于GD已经内置了,你不能重新编译扩展并动态加载它。恐怕你需要从源代码重新编译PHP。 - ItalyPaleAle
尝试使用 https://github.com/phpbrew/phpbrew - zx1986
4个回答

81
You are right, Yosemite的内置PHP不支持PNG和FreeType。
更新2015/10,适用于El Captian: 在OS X 10.11 El Capitan中,PNG支持已经回归,但是仍然缺少FreeType。

解决方案

使用Homebrew软件包管理器轻松构建和安装完整的PHP,并在Apache配置中替换它。如果按照以下步骤操作,整个过程只需要大约十分钟。

快速(但完整)的步骤说明

(Note 1: 在此我使用Homebrew,这是一个适用于OS X的包管理系统。如果你熟悉另一个包管理器MacPorts,你也可以使用该系统来实现相同的结果。在你的机器上同时使用已有的MacPorts安装和我的Homebrew解决方案也是可能的。)
(Note 2: 如果你想阅读有关安装过程的所有细节,请查看Homebrew基本安装Homebrew PHP安装信息。但是,如果你按照这些步骤操作,你真的不需要那些内容。)
现在我们开始吧...
首先从App Store安装Xcode。如果你已经安装了它,请再次检查App Store,确保你拥有最新版本!
现在你需要安装Xcode命令行工具。为此,请打开终端并输入:
xcode-select --install

下一条命令将安装Homebrew软件包管理系统:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

这段脚本会先解释它将要做什么,然后暂停执行。
接下来要输入的命令是一种系统状态测试:
brew doctor

这段文字是关于Homebrew安装的基础检查。 我收到了一个警告信息"You have MacPorts or Fink installed: /opt/local/bin/port ...",但我成功地忽略了它。 ;) 现在设置homebrew/dupes tap,它包含我们需要的依赖项:
brew tap homebrew/dupes

安装homebrew/versions tap,它还包含我们需要的依赖项:

brew tap homebrew/versions

然后运行以下命令:
brew tap homebrew/homebrew-php

现在,您可以开始构建PHP。要获取可用配置选项的列表,请运行以下命令之一:
brew options php55
brew options php56

但是我只是使用默认设置就很好了。
要这样做,请输入以下其中之一,具体取决于您的需求:

brew install php55
brew install php56

(This takes a while, please be patient!)
在Yosemite(10.10.5)上安装php56(5.6.x)时会出现一个错误,请参见github上的issue。使用brew install php56 --without-ldap代替。
如果您收到“无法找到OpenSSL”的错误类型,则表示您尚未按照一开始告诉您的那样安装Xcode命令行工具。 ;)继续安装它们并重新运行最后一个命令。
现在已经构建了PHP,脚本将以有关如何使用它的详细信息结束:
打开httpd.conf(应位于/private/etc/apache2/httpd.conf),并通过添加这两行中的一个来启用PHP,具体取决于您刚刚安装的PHP版本:
LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so

请不要忘记注释掉任何现有的LoadModule php5_module...行,这可能是由于Yosemite自带的PHP版本而存在的!请重新启动Apache。
sudo apachectl restart

您的新php.ini文件位于:/usr/local/etc/php/5.5/php.ini

祝您使用愉快!


3
我用一行命令"brew install php55-mcrypt"轻松完成了它。 - Kyslik
1
@vinylDeveloper:你试过运行 brew list 命令来查看已安装的包吗?以下是 PHP5.5 最少需要的包:_freetype、icu4c、libpng、php55m、zlib、gettext、jpeg、libtool、unixodbc_。否则,有很多好的 Homebrew 教程可供参考。可以通过谷歌搜索来获取帮助。 - Jpsy
@Jpsy 我正在尝试使用imagettfbbox()函数,但出现了“未定义的函数”错误。我按照您的指示一步一步操作,以防他们已经为我完成了。但它仍然无法正常工作。我已经打开了一个新的案例。如果您(或任何人)能够查看一下:http://stackoverflow.com/questions/29402642/how-can-i-correctly-configure-gd-support-for-php-i-am-getting-an-error-calling,我将不胜感激。谢谢! - ElPiter
1
嗨@ElPiter!请查看我对你其他帖子的回答。显然,你已经启用了GD,但是缺少FreeType。在我的PHP版本中,FreeType和imagettfbbox()都可用,我使用上述说明创建了它。你确定你实施了每个步骤吗? 你可能想尝试brew install freetype - Jpsy
1
如果您安装了PHP5.6,请在httpd.conf中添加以下内容(将php55替换为php56):LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so - biko
显示剩余16条评论

21

@Jpsy的答案很好,但还有另一个选项,来自来自liip的人们,这里。这是一个PHP包,已经为Yosemite(旧版本也适用)构建预编译,但只需要一行代码:

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5

之后,一切都准备就绪,可以正常工作。该安装所带的配置非常适合Symfony 2开发,但在其他用例中也应该能正常工作。

最后,如果您还需要使用更新的PHP CLI,但不想使用操作系统默认的PHP版本,则还可以将以下代码行添加到您的.bash_profile或类似文件中:

export PATH=/usr/local/php5/bin:$PATH


1
谢谢,这个简单快捷的解决方案正是我需要的。 - frosty22
非常愉快。我认为上面的解决方案也很好,但对于如此简单的事情来说,它过于复杂了。此外,这个解决方案还带有适用于大多数Web开发项目的默认配置... - Patrick D'appollonio
这对我没有解决问题,我仍然缺少mcrypt扩展。 - Mazzone
如何删除此软件包并恢复到brew的版本? - kouton

3

我的声望不够,无法发表评论。但如果你正在使用OS X Server for Yosemite(来自App Store的版本4),需要编辑的文件是:

/library/server/web/config/apache2/httpd_server_app.conf

我的文件现在看起来像这样,确认在使用homebrew的php 5.6之后它可以正常工作。

#LoadModule php5_module libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so

0

标准的Apache随Yosemite一起提供,需要更新的文件为:

sudo brew install php55

/etc/apache2/httpd.conf 中。

请注意,php.ini 的位置也发生了变化。与 Yosemite 一起提供的标准版本位于 /etc/php.ini,而使用 homebrew 版本的则位于 /usr/local/etc/php/5.5/php.ini


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接