将IMAP添加到OSX上的PHP 7.2

2ledvvac  于 2023-02-28  发布在  PHP
关注(0)|答案(6)|浏览(169)

我在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.

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

1hdlvixo

1hdlvixo1#

Kevin Abel提供了一些从Homebrew/core中删除的PHP扩展。您可以使用以下命令安装IMAP扩展:

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

要安装特定版本(如7.2),请用途:

brew install php@7.2-imap
shyt4zoc

shyt4zoc2#

下面是我在莫哈韦沙漠下解决这个问题的方法:
首先,我为PHP7.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
jjhzyzn0

jjhzyzn03#

有一个更好的方法直接使用Homebrew重新编译带有IMAP扩展的php。
2023/02年更新:此过程甚至可以在php 8中使用。只需使用 php 而不是版本化公式 php@7.4
1.运行brew编辑php@7.4
1.在depends_on部分的末尾添加depends_on“imap-uw”
1.检查depends_on部分中的openssl版本
1.在--with部分的末尾添加**--with-imap=#{公式[“imap-uw”].opt_前缀}**
1.在--with-imap之后添加**--with-imap-ssl=#{Formula[“openssl@1.1”].opt_prefix}。检查并确保它与depends_on部分中的版本相同
1.运行
HOMEBREW_NO_INSTALL_FROM_API=1 brew重新安装--从源代码构建php@7.4**
2023/02年更新:如果不使用HOMEBREW_NO_INSTALL_FROM_API=1作为前缀,则不使用修改后的文件。自2023/01起行为发生变化,更多信息请参阅https://github.com/Homebrew/brew/pull/14412

  1. php.ini中的php_imap. so扩展不需要启用,因为它已经编译成PHP了,可以检查phpinfo();
    如果特性中的公式更新,只需再次编辑公式,然后使用--build-from-source重新安装。
b4wnujal

b4wnujal4#

对于那些喜欢使用本机命令安装imap ext而不添加其他tap或smth的人来说,这是一个答案。
简而言之,我们需要从源代码编译扩展。好的,这是过程。

$ # 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"

就这样。祝你好运!

jgovgodb

jgovgodb5#

kabel/php-ext/php@7.2-imap过期后,我使用了另一个水龙头:

brew tap shivammathur/php

brew tap shivammathur/extensions

brew install imap@7.2
h22fl7wq

h22fl7wq6#

对于那些在莫哈韦遇到麻烦的人,我已经分叉了存储库并修复了它用途:改为brew tap vishal-sancheti/php-ext

相关问题