LoginSignup
8
8

Sierra/HighSierra で Homebrew/phpbrew でハマった件

Last updated at Posted at 2017-10-18

macOS Sierra とか High Sierra にして、Xcode9 にした時に、 Homebrew やら phpbrew がいろいろおかしくなった時のメモです。

この問題は、それぞれの環境によるところが大きいと思います。どなたもがこういったことが起こるわけでもなさそうですし、ただ、設定ができない状態では本当に困ってしまうので、対処療法をせざるを得ません。

今回、僕が遭遇した様々なトラブルと同じ目にあう人の助けになればと、Qiita にメモを残すことにしました。(後々の自分のためともいう)

Sierra と Xcode9 の組み合わせ編

うまくいかない現象と、その解決方法をつらつらと書いていきます。

brew update に失敗

brew update をした時に

/usr/local/Library/brew.sh: line 32: /usr/local/Library/ENV/scm/git: No such file or directory

こんなのがでたら

brew prune

とする

Homebrew で PHP をインストール

PHP をインストールしようと

brew install php70

などとするとエラーが出る。

brew install php70 --build-from-source

と、 --build-from-source をつけたらビルドが通るようになった。
これは、PHP 本体だけじゃなくて、拡張のインストールのときも有効です。

phpbrew でビルドがコケる

phpbrew install 5.6.31

とかすると

configure: error: off_t undefined;

というエラーが出る。これの解決法がどうもわからなかった。

phpbrew install 7.0.8

と別のバージョンを入れようとすると、エラーが変わって、

ld: file not found: /usr/lib/system/libsystem_darwin.dylib for architecture x86_64

というエラーが出る。こちらは、

LDFLAGS="-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/system" phpbrew install 7.0.8

LDFLAGS でパスを指定すると通った。次の Qiita 記事のおかげです。ありがとうございます。

参考: PHP7をmacOSでビルドしたらエラーになった

ということで、この方法で入るならと brew では 5.6 をインストールして、phpbrew で 7系を入れることにした。

phpbrew install 7.1.10

と、最新版 7.1 を入れようと思ったら、またまた

configure: error: off_t undefined;

というエラーが出るので、こちらもさっきうまく行った方法でやってみようと、

LDFLAGS="-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/system" phpbrew install 7.1.10

でやってみる。見事にビルドが通った。
さっきのエラーは 5.6 を入れたようとしていた時と同じエラーじゃないですか。それじゃ、ということで 5.6 系でもこの方法でやってみる

LDFLAGS="-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/system" phpbrew install 5.6.31

おお!無事に通った。ということで、Sierra + Xcode9 環境で、phpbrew うまくいかない時は、.profile などに

export LDFLAGS="-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/system"

をセットしてやるとうまくいきそうです。

Hight Sierra と Xcode9 編

さて次は High Sierra です。実は、Sierra 編とは別の Mac です。
Sierra と Xcode9 の組み合わせが良くないのであって、 High Sierra と Xcode9 なら、なんの問題もないだろうと思ってたんですが、いろいろありました。

だけど、これも僕の環境の別な何かが原因なのかもしれません。
発生したのは OpenSSL の evp.h ヘッダファイルが見つからないというエラーです。

phpbrew install 5.6.31

次のエラーが出ました。

configure: error: Cannot find OpenSSL's <evp.h>

libressl がどうのという話があったので入れてみます。

brew install libressl

状況変わらず

include ディレクトリにシンボリックリンクを置いてみた

cd  /usr/local/include
ln -s /usr/local/opt/openssl/include/openssl .

だめ。全く同じエラーが出ます。

次の、コメントに書いてあるようにやってみます。

phpbrew install 5.6.31 +default +openssl=/usr/local/Cellar/openssl/1.0.2l

通った!
ここまで来るのに、めっちゃ時間かかりました。(´Д`)ハァ…

8
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8