【问题标题】:Adding IMAP to PHP 7.2 on OSX在 OSX 上将 IMAP 添加到 PHP 7.2
【发布时间】:2018-12-28 05:46:53
【问题描述】:

我在 OS X El Capitan 上使用 PHP 7.2,使用 Homebrew 安装(当然)。现在我想使用 PHP 的 IMAP 扩展中的一些 IMAP 函数,但是无论我搜索什么,我都找不到在 OSX 上添加扩展的方法。

我尝试过的一些事情...当然,我尝试了最常用的推荐方法:

$ brew reinstall php --with-imap

然而这失败了,返回:

Warning: php: this formula has no --with-imap option so it will be ignored!

我发现顺便提到的另一种方法也失败了:

$ brew install php72-imap

Error: No available formula with the name "php72-imap" 
==> Searching for a previously deleted formula (in the last month)...
Warning: homebrew/core is shallow clone. To get complete history run:
  git -C "$(brew --repo homebrew/core)" fetch --unshallow

Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.

我不确定该往哪个方向发展。我确信有一种简单的、可能有记录的方法可以做到这一点,但我还没有找到。也许我只是在错误的地方寻找并使用了错误的搜索词......

【问题讨论】:

标签: php macos homebrew php-imap


【解决方案1】:

Kevin Abel 提供了一些从Homebrew/core 中删除的 PHP 扩展。您可以通过以下方式安装 IMAP 扩展:

brew tap kabel/php-ext
brew install php-imap

要安装特定版本,例如 7.2,请使用:

brew install php@7.2-imap

【讨论】:

  • 这不为 7.2 提供 IMAP 扩展。
  • PHP 7.1 有一个 IMAP 扩展:github.com/kabel/homebrew-php-ext/blob/master/Formula/…。您可能可以毫不费力地将其调整到 7.2。
  • 虽然此答案为您提供了有关如何安装 PHP 扩展的一般说明,但它将安装可用的最新 PHP 版本,而不是您需要的版本。我选择了亚历克斯提供的答案,因为它更具体。
【解决方案2】:

这是我在 Mojave 下解决这个问题的方法:

首先,我为 PHP 7.2 安装了 IMAP 模块

brew install kabel/php-ext/php@7.2-imap

其次,我将 imap.so 从已安装文件夹复制到 php.ini 使用的“extension_dir”

sudo cp /usr/local/lib/php/20170718/imap.so to /usr/local/lib/php/pecl/20170718

【讨论】:

  • 谢谢谢谢!这在 PHP 7.4 中对我有用(只需将 brew 安装相应地更改为 7.4)
  • 谢谢!这也适用于 8.0:brew install kabel/php-ext/php@8.0-imap
  • 这是要走的路。我正在使用来自 shivammathur 提供的水龙头的软件包,但方法几乎相同,只是我必须先添加用于扩展的水龙头。干杯!
【解决方案3】:

这个答案适合那些喜欢使用本机命令安装 imap ext 而无需添加其他水龙头或其他东西的人。

简而言之,我们需要从源代码编译扩展。 好的,这是过程。

$ # Download sources from php.net of already installed php version. 
$ cd ~/Downloads
$ wget https://www.php.net/distributions/php-7.3.5.tar.gz
$ gunzip php-7.3.5.tar.gz
$ tar xvf php-7.3.5.tar
$ # Go to ext dir 
$ cd php-7.3.5/ext/imap
$ # prepare extension using phpize command, you should 
$ # ensure that you use phpize of proper version from 
$ # already installed php version as checking the API version for example
$ phpize
$ # prepare dependencies
$ # install openssl and imap
$ brew install openssl
$ brew install imap-uw
$ # after all installation check the installed paths of the exts
$ ./configure --with-kerberos --with-imap-ssl=/usr/local/Cellar/openssl/1.0.2r/ --with-imap=/usr/local/Cellar/imap-uw/2007f/
$ make
$ # get extension dir 
$ php -i | grep extension_dir
extension_dir => /usr/local/lib/php/pecl/20180731 => /usr/local/lib/php/pecl/20180731
$ cp modules/imap.so /usr/local/lib/php/pecl/20180731/
$ # add extension to your php.ini
# [imap]
# extension="imap.so"

就是这样。幸运!

【讨论】:

  • 救命稻草。这应该是公认的答案。在执行命令时,任何人都应该检查他们本地的正确 php、openssl、imap-uw 版本和文件夹.....
  • 这是针对 linux rigth 的?.. Mac OS X 有什么线索吗?
  • 真正的救生员!谢谢@wtorsi!在 2021 年使用 php 7.3 在我的 MacOS Big Sur 上工作。
【解决方案4】:

有一种更好的方法可以直接使用 Homebrew 重新编译带有 IMAP 扩展的 php。

  1. 运行brew edit php@7.4

  2. 在depends_on部分的末尾添加depends_on "imap-uw"

  3. 检查哪个版本的 openssl 在depends_on 部分中

  4. 在 --with 部分的末尾添加 --with-imap=#{Formula["imap-uw"].opt_prefix}

  5. 在 --with-imap 之后添加 --with-imap-ssl=#{Formula["openssl@1.1"].opt_prefix}。检查确保它与depends_on部分中的版本相同

  6. 运行brew reinstall --build-from-source php@7.4

  7. 不需要在 php.ini 中启用 php_imap.so 扩展,因为它已经编译成 PHP。你可以查看phpinfo();

如果功能中的公式更新,只需再次编辑公式并使用 --build-from-source 重新安装。

【讨论】:

  • 这是一个很好的答案,因为它不依赖于随机抽头。它对我有用。
  • 成功了!这些是我喜欢看到的答案:清晰、循序渐进、有效。
【解决方案5】:

kabel/php-ext/php@7.2-imap过期后,我又用了一个tap:

brew tap shivammathur/php

brew tap shivammathur/extensions

brew install imap@7.2

【讨论】:

  • 这是唯一在 mojave 和 php 7.3 上对我有用的解决方案
  • Big Sur 和 php@7.4 在这里,这个解决方案也有效!
【解决方案6】:

对于那些在 Mojave 中遇到问题的人,我已经分叉了存储库并修复了它,使用: 改为brew tap vishal-sancheti/php-ext

【讨论】:

  • 不幸的是它不起作用 - 错误:无法点击 vishal-sancheti/php-ext:点击中的语法无效!
猜你喜欢
  • 2016-02-05
  • 1970-01-01
  • 2018-09-17
  • 2018-05-04
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
相关资源
最近更新 更多