21
14

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.

php-intlが使えなくなったせいでcomposer installが失敗する

Posted at

こんな経験はないだろうか。
ある日突然、いつものようにcomposer installをすると物凄い勢いで怒られた、という経験が。

スクリーンショット 2018-06-17 17.47.10.png スクリーンショット 2018-06-17 17.47.17.png

何を訳のわからんことを。
intlならとっくの昔に入れて、、、

$ php -m | grep intl
$ 

ん??
intlが出てこない、、、

しゃあねぇ、もう一度インストールしますか。

$ brew install php71-intl
// 「php71-intl」など存在しない、と怒られる

ん??

結論

調べた結果、今までphp71-*が含まれていたhomebrew/phpがdeprecatedになっており、homebrew/coreに含まれるようになっているらしい。

homebrew/php
homebrew/core
(参考)
homebrewでphp71-*系がインストールできなくなってた

やったこと

記事にしたがって以下を実施
・brewでインストールしているphp関連のfomura(リポジトリ的な)を全部消す
・homebrew/phpも消す
・新しくphp@7.1を入れる
・インストール後に表示されるメッセージにしたがってパスを通す
・古い設定ファイルを別ディレクトリに移動
composer install実行

brewでインストールしているphp関連のfomura(リポジトリ的な)を全部消す

・php関連のfomuraを確認

$ brew list | grep php
php71
php71-intl
php@7.1

一応homebrew/core内のphp@7.1も入ってはいたが、php71などが邪魔していた可能性があるので、一旦全部消す。

$ brew uninstall php71 php71-intl php@7.1

homebrew/phpも消す

非推奨なので消す。

$ brew untap homebrew/php

新しくphp@7.1を入れる

$ brew install php@7.1

もしかしたらこれも必要かも。

$ brew link --force php@7.1

インストール後に表示されるメッセージにしたがってパスを通す

上記を実行すると、パスを通すようメッセージが表示されるため、それにしたがってパスを通す。
正確にはパスを通すコマンドをbash起動時に毎回実行するように.bash_profileにコマンドを記入する。

$ echo export PATH="/usr/local/opt/php@7.1/bin:$PATH" >> ~/.bash_profile
$ echo export PATH="/usr/local/opt/php@7.1/sbin:$PATH" >> ~/.bash_profile
// .bash_profileを実行
$ source ~/.bash_profile

パスが通っているか確認

$ which php
/usr/local/opt/php@7.1/bin/php

古い設定ファイルを別ディレクトリに移動

phpのバージョンを確認しようとするとエラーが出た。

$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/opt/php71-igbinary/igbinary.so' - dlopen(/usr/local/opt/php71-igbinary/igbinary.so, 9): image not found in Unknown on line 0

古い設定ファイルを読み込まないようにする。

$ ls /usr/local/etc/php/7.1/conf.d
ext-igbinary.ini ext-intl.ini ext-mcrypt.ini   ext-opcache.ini  ext-redis.ini
$ mv /usr/local/etc/php/7.1/conf.d/* ~/DeskTop/backup

エラーが消えてintlも入っていることを確認

$ php -v
$ php -m | grep intl
intl

最後にcomposer installするとエラーが出ずに実行できた!

21
14
4

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
21
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?