【问题标题】:Yosemite / El Capitan php-gd + mcrypt installationYosemite / El Capitan php-gd + mcrypt 安装
【发布时间】:2014-12-17 02:16:34
【问题描述】:

如何在 Yosemite 10.10 - PHP 5.5.14 build 中安装/启用 php-gdmcrypt

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

要检查您是否安装了 gd 和 mcrypt,请使用 $ php -m 显示已编译的模块,如果您缺少所需的模块,请继续,请参阅 accepted answer


GD

所以,Apple 安装了 GD(并且您使用的是他们的 PHP 版本,这很好),但不包括对 PNG 的支持。

如果出现以下情况,您肯定缺少“完整”gd(支持 png) 模块: 缺少imagecreatefrompng() 函数。

"Call to undefined function imagecreatefrompng()"


加密

使用 accepted answer 安装 brew 并省略 gd 安装部分(除非您需要它),并使用以下步骤:

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

想要在 PHP 版本之间切换?

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

【问题讨论】:

  • GD 应该默认安装在优胜美地的 PHP 上,我相信。你有多个 PHP 副本吗?你能用你的网络服务器上的 phpinfo() 检查正在使用的 'php' 并将其与 which php 的输出进行比较吗?
  • 你好,该行输出/usr/bin/php
  • 因此,Apple 安装了 GD(并且您使用的是他们的 PHP 版本,这很好),但不包括对 PNG 的支持。让我看看我能不能让它工作。
  • 是的,我正在使用 Apples PHP 开箱即用 + 使用本教程在 mcrypt 中安装/编译 coolestguidesontheplanet.com/…
  • 是的,我打算提出一个类似的解决方案。但是,由于 GD 已经内置,您无法重新编译扩展并动态加载它。恐怕您必须从源代码重新编译 PHP。

标签: php homebrew osx-yosemite osx-elcapitan php-gd


【解决方案1】:

你说得对,Yosemite 的内置 PHP 不支持 PNG 和 FreeType。
El Captian 2015/10 更新: OS X 10.11 El Capitan 重新支持 PNG,但 FreeType仍然失踪。

解决方案

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

快速(但完整)浏览

(注 1:我在这里使用 Homebrew,这是一个 OS X 的包管理系统。如果你熟悉 MacPorts - 另一个包管理器 - 你可以实现相同的该系统的结果。还可以将我的 Homebrew 解决方案与您机器上现有的 MacPorts 安装并行使用。)
(注 2:如果您想阅读有关安装过程的所有详细信息,请查看 Homebrew basic installationHomebrew PHP installation 信息。但如果您按照这些步骤操作,您真的不需要。)

现在我们走吧……

首先安装Xcode from App Store。如果您已经拥有它,请再次检查 App Store,以确保您拥有最新版本!

现在您需要安装 Xcode 命令行工具。为此,请打开终端并输入:

xcode-select --install

下一个命令将安装 Homebrew 包管理系统:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

脚本解释了它将做什么,然后在执行之前暂停。

接下来要输入的命令是一种系统状态测试:

brew doctor

这将检查 Homebrew 安装的基础知识。
我收到一条警告“您安装了 MacPorts 或 Fink:/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

(这需要一段时间,请耐心等待!)

在 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)并通过添加这两行中的 ONE 来启用 PHP,具体取决于您刚刚安装的 PHP 版本:

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

不要忘记注释掉 Yosemite 自己的 PHP 版本中可能存在的任何现有 LoadModule php5_module... 行!

重启 Apache

sudo apachectl restart

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

享受吧!

【讨论】:

  • 如何在 mcrypt 中安装/编译?
  • 我用一行命令“brew install php55-mcrypt”轻松搞定
  • @vinylDeveloper:您是否尝试brew list 来查看已安装的软件包?这是 PHP5.5 列表中的最低要求:freetype、icu4c、libpng、php55m、zlib、gettext、jpeg、libtool、unixodbc。否则,那里有很多很好的 Homebrew 教程。谷歌会提供帮助。
  • 嗨@ElPiter!检查我对您其他帖子的回答。显然你有 GD 活动但缺少 FreeType。 FreeType 和 imagettfbbox() 在我使用上述说明创建的 PHP 化身中都可用。你确定你实现了每一步吗?你可能想试试brew install freetype
  • 如果您安装了 PHP5.6,在 httpd.conf 中添加以下内容(php56 而不是 php55) LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
【解决方案2】:

@Jpsy 的回答很好,但还有另一个选择,来自 liip 的人here。这是一个为 Yosemite 预构建的 PHP 包(旧版本也可以),但它只是 一行 代码:

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

【讨论】:

  • 谢谢,简单快速有效的解决方案正是我所需要的。
  • 我的荣幸。我认为上面的解决方案也很好,但是对于这么简单的事情来说太复杂了。此外,该解决方案还附带适用于大多数 Web 开发项目的默认配置...
  • 这并没有解决我的问题,我仍然缺少一个 mcrypt 扩展
  • 如何删除这个包并恢复到 brew 的版本?
【解决方案3】:

我没有足够的代表发表评论,但如果您使用的是 OS X Server for Yosemite(来自 App Store 的第 4 版),则要编辑的文件是:

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

我的现在看起来像这样,并在使用自制的 php 5.6 后确认它可以工作。

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

【讨论】:

    【解决方案4】:

    Yosemite 附带的标准 Apache 之后要更新的文件

    sudo brew install php55
    

    /etc/apache2/httpd.conf

    请注意,php.ini 的位置也已更改。 Yosemite 自带的标准版在 /etc/php.ini,自制版在/usr/local/etc/php/5.5/php.ini

    【讨论】:

      猜你喜欢
      • 2016-02-02
      • 2017-03-13
      • 2016-03-11
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 2016-07-23
      相关资源
      最近更新 更多