9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

phpbrewでインストールしたphpがdyld: Library not loaded: ...で動かなくなった

Last updated at Posted at 2019-01-27

はじめに

phpbrewでインストールしたphpがdyld: Library not loaded: ...のエラーを出して動かなくなった。phpbrewコマンド自体も中でphp呼ぶ事が多くそれはswitchで選んでいたphpが使われるようでちょっと焦る。なにしろhelpも見られない。

% phpbrew --help
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
  Referenced from: /Users/matsui/.phpbrew/php/php-7.3.0/bin/php
  Reason: image not found

めったにないけどいつかは次もありそうなので対処方法をメモしておく。

原因

homebrewのupdateをした影響で、phpbrew管理下のphpをビルドしたときにリンクしたライブラリがなくなっていた。今回はreadlineが7から8になったので、libreadline.7.dylibがなくなってかわりにlibreadline.8.dylibができていた。

対処

phpbrew switch-off

まずはこれでシステムのphpに切り替える。

(追記) switfh-offがうまくいかない場合

phpbrewの最近のバージョンではこのような場合にphpbrew switch-offもできなくなってしまいました。(switch-offの処理にもphpが必要になったらしい)

代わりにphpbrewが内部で使用するphpを指定できるので、phpbrew system /usr/bin/phpなどとしてやればphpbrewが動作するようになります。

(方法1)再インストール

だいたいインストールしたときのvariantとか忘れてるのでphpbrew list -vで確認する。

% phpbrew list -v
* (system)
  php-7.3.1
    Variants:  +bz2=/usr/local/opt/bzip2  +zlib=/usr/local/opt/zlib  +xml +opcache \
              +bcmath +calendar +cli +ctype +dom +fileinfo +filter +ipc +json +mbregex \
              +mbstring +mhash +mcrypt +pcntl +pcre +pdo +pear +phar +posix +readline \
              +sockets +tokenizer +curl +openssl +zip
  php-7.3.0
    Variants:  +bz2=/usr/local/Cellar/bzip2/1.0.6_1  +zlib=/usr/local/Cellar/zlib/1.2.11  \
              +xml +opcache +bcmath +calendar +cli +ctype +dom +fileinfo +filter +ipc \
              +json +mbregex +mbstring +mhash +mcrypt +pcntl +pcre +pdo +pear +phar \
              +posix +readline +sockets +tokenizer +curl +openssl +zip
  php-7.2.13
    Variants:  +bz2=/usr/local/Cellar/bzip2/1.0.6_1  +zlib=/usr/local/Cellar/zlib/1.2.11  \
              +xml +opcache +bcmath +calendar +cli +ctype +dom +fileinfo +filter +ipc \
              +json +mbregex +mbstring +mhash +mcrypt +pcntl +pcre +pdo +pear +phar \
              +posix +readline +sockets +tokenizer +curl +openssl +zip

あとはこれを見ながら再インストール。いい機会なのでもう使いそうにないのは整理するのもいい。

(方法2)なくなったライブラリを戻す

homebrewは古いバージョンも/usr/local/Cellerの下に残っているので、そちらから足りなくなったファイルをみつけてsymbolic linkを張るなどする手もある。

たとえば今回の場合なら

% ln -s /usr/local/Cellar/readline/7.0.5/lib/libreadline.7.dylib /usr/local/opt/readline/lib

ただしこちらの方法を使ったときはうっかりbrew cleanupで古いパッケージをまとめて削除などしないように気をつけること。

9
4
0

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
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?