YmBIgo
@YmBIgo (和也 栗原)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PHPenv で PHP がインストールできない [capstone/capstone.h not found]

Discussion

Closed

phpenv で PHP 8.1.10 をインストールしたい。

使っている Mac で phpenv で PHP をインストールしたいが、'capstone/capstone.h' file not found というエラーが出てきてインストールできない。
capstone は brew でインストールしたはずなのですが。

スクリーンショット 2022-11-30 19.28.20.png

CapStone はインストール済みです ↓

スクリーンショット 2022-11-30 19.33.10.png

自分で試したコマンド

他のコマンドの対応もあったのですが、主に下のコマンドでインストールを試みました。
まずは、brew でのインストール。

brew install autoconf bzip2 icu4c krb5 libedit libiconv libjpeg libpng libxml2 libzip oniguruma openssl@1.1 pkg-config tidy-html5

その後で、パスも含めて下のようなコマンドで、PHP のインストールを試みました(--with-tidy=$(brew --prefix tidy-html5)を含めると、error: Cannot find libtidyというエラーが消えました)。

PHP_RPATHS="$(brew --prefix bzip2)" PHP_BUILD_CONFIGURE_OPTS="--with-bz2=$(brew --prefix bzip2) --with-iconv=$(brew --prefix libiconv) --with-libedit=/usr/local/opt/libedit --with-tidy=$(brew --prefix tidy-html5)" \
PKG_CONFIG_PATH="/usr/local/opt/krb5/lib/pkgconfig:/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libedit/lib/pkgconfig:/usr/local/opt/libjpeg/lib/pkgconfig:/usr/local/opt/libpng/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/libzip/lib/pkgconfig:/usr/local/opt/oniguruma/lib/pkgconfig:/usr/local/opt/openssl@1.1/lib/pkgconfig:/usr/local/opt/tidy-html5/lib/pkgconfig" \
phpenv install 8.1.10
0

を参考にして、PHP_BUILD_CONFIGURE_OPTS の最後に --disable-opcache-jit をつけると、無事にインストールできました。

0Like

capstone.h について、 --disable-opcache-jit をしたくなかったので下記対応で通しました。

確認したところ pkg-config が返す CFAGS のパスが php 側の想定とマッチしてないため、 CAPSTONE_CFLAGS で上書きして、無事ビルドが通りました。

$ pkg-config --cflags capstone
-I/opt/homebrew/Cellar/capstone/4.0.2/include/capstone

# include/capstone/capstone.h はあるが、 
# include/capsotne/capstone/capstone.h は無いのでエラーになる
# 一つ上の include までを CFLAGS で指定する
export CAPSTONE_CFLAGS='-I/opt/homebrew/Cellar/capstone/4.0.2/include'
1Like

Your answer might help someone💌