PHP composerでext-httpエラーの解決方法


有益な記事がなく苦労したのでメモ

環境

PHP7.4(CakePHP3.5)
ローカル(mac mojaba 10.14.6)

PhpStormで拡張モジュールはcomposer.jsonに書かないと警告が出るらしい

簡単にまとめるとタイトルの通り

ext-httpも例外ではないらしい

php拡張由来の定数や関数などに依存しているときにcomposer.jsonにその依存が明示されていることを検査するらしい

でもそれを強制するってそんな大切か?って思うんですがw

詳しくは下記記事
https://blog.pinkumohikan.com/entry/warning-ext-json-is-missing-in-composerjson-on-jetbrains-intellij

ネット上をサーフィンしまくって解決


  Problem 1
    - The requested PHP extension ext-http * is missing from your system.
      Install or enable PHP's http extension.

composerでこのエラーが出た場合はpecl_httpをインストールする必要があった。
PHP組み込み拡張モジュールとは別に、Pecl拡張モジュールというネット上から取得してくる拡張モジュールが存在する
https://www.php.net/manual/ja/install.pecl.downloads.php

Apacheでphpを動かしているとphp.iniでextensionの設定のみでできるような記憶であったが(?)
ローカルの場合はhttpモジュールがないのでインストールする必要がある。

実施手順


$ brew install autoconf
$ brew install m4
$ which m4
/usr/bin/m4 

m4の実行パスがMAMPとかのパスになっている場合.bash_profile(.zshprofile)でexportしているPATHで/usr/binをMAMPパスよりも前に持ってくる
php -vでphpのパスが変わってしまった場合も同様に、/usr/binよりも前にphpパスを持って来ればOK


$ sudo pecl install pecl_http
$ php -v

php.iniにextension=http.soが記載されていればOK
php -v などで下記エラーが出る場合はphp.iniでextensionの重複を消す

PHP Warning: Module 'raphf' already loaded in Unknown on line 0
PHP Warning: Module 'propro' already loaded in Unknown on line 0
PHP Warning: Module 'raphf' already loaded in Unknown on line 0

ちなみにphp.iniの場所特定


$  php -i | grep php.ini 
Configuration File (php.ini) Path => /usr/local/etc/php/7.4
Loaded Configuration File => /usr/local/etc/php/7.4/php.ini

参考記事
https://www.php.net/manual/ja/install.pecl.downloads.php
https://www.366service.com/jp/qa/640015a450ba68b8414671db0ac15a48
https://stackoverflow.com/questions/59618142/fixing-m4-on-mac-os-10-14-5