web-dev-qa-db-ja.com

OSXでPHP 7.2にIMAPを追加

Homebrewを使用してインストールされたOS X El CapitanでPHP 7.2を使用しています(もちろん)。今、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.

私はこれでどちらの方向に進むべきか正確にはわかりません。これを行うには、おそらく文書化された簡単な方法があると確信していますが、まだ見つかりません。おそらく、間違った場所を見て、間違った検索語を使用しているだけでしょう...

8
laef

Kevin Abel は、いくつかのPHP拡張機能を Homebrew/core から削除しました。IMAP拡張機能は次の方法でインストールできます。

brew tap kabel/php-ext
brew install php-imap
11
Ortomala Lokni

Mojaveでこの問題を解決した方法を次に示します。

最初に、PHP 7.2のIMAPモジュールをインストールしました

brew install kabel/php-ext/[email protected]

次に、imap.soをインストール済みフォルダーからphp.iniが使用する「extension_dir」にコピーしました

Sudo cp /usr/local/lib/php/20170718/imap.so to /usr/local/lib/php/pecl/20170718
7
Alex

他のタップやsmthを追加せずにネイティブコマンドを使用してimap extをインストールすることを好む人に対するこの回答。

つまり、ソースから拡張機能をコンパイルする必要があります。 OK、ここにプロセスがあります。

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

それでおしまい。ラッキーに!

3
wtorsi

Mojaveで問題を抱えている人のために、リポジトリを分岐させて使用を修正しました:brew tap vishal-sancheti/php-ext代わりに

2
Vishal Sancheti