PHPのバージョンが5.4のPCがあったので、メインの開発で使用していたバージョンと同じ5.6系にHomebrewでアップデートした時のメモ。
Homebrewをアップデートする
$ brew update
「Error: Formulae found in multiple taps」というエラーが出た
Error: Formulae found in multiple taps:
* homebrew/php/php54
* josegonzalez/php/php54
Formulaeが複数tapされてるのが原因っぽいので片方のtapを解除すればOK
$ brew untap josegonzalez/php
今使っているPHPバージョンのリンクを解除する
$ brew unlink php54
PHP 5.6系をインストールする
使えるオプションを確認する
$ brew options php56 --with-cgi Enable building of the CGI executable (implies --without-fpm) --with-debug Compile with debugging symbols --with-enchant Build with enchant support # 略
[オプションの参考]: PHP: 中心となる configure オプションのリスト - Manual
PHP5.6系をインストール
$ brew install php56
色々インストール
$ brew install php56-apcu php56-mcrypt php56-memcache php56-opcache php56-intl php56-igbinary
インストールが完了したらバージョンを確認
$ php -v PHP 5.6.19 (cli) (built: Mar 14 2016 11:55:28) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
インストールしたバージョンが表示されてたらOK
php -vでWarningやErrorが表示されたてハマったメモ
PHP Warning: PHP Startup: <モジュール名>: Unable to initialize module
--with-debug
オプションを付けてPHPをインストールすると、こんな感じのエラーがでました。
$ php -v Cannot load Zend OPcache - it was built with configuration API220131226,NTS, whereas running engine is API220131226,NTS,debug PHP Warning: PHP Startup: apcu: Unable to initialize module Module compiled with build ID=API20131226,NTS PHP compiled with build ID=API20131226,NTS,debug These options need to match in Unknown on line 0 # 中略 PHP 5.6.19 (cli) (built: Mar 26 2016 01:06:07) (DEBUG) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
色々インストールで入れモジュールについて、Warningが表示された。
どうやらモジュールにdebugってのが無いのが原因っぽい。
--with-debug
の時はモジュールインストール時に-fs
オプションを付けないとダメっぽい。
少し面倒だけど一度入れたモジュールをアンインストールして、-fs
オプションを付けてインストールしなおせばOK
$ brew uninstall php56-apcu php56-mcrypt php56-memcache php56-opcache php56-intl php56-igbinary # 削除される $ brew install php56-apcu php56-mcrypt php56-memcache php56-opcache php56-intl php56-igbinary -fs # 再度インストールされる $ php -v PHP 5.6.19 (cli) (built: Mar 26 2016 01:12:01) (DEBUG) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
[参考]: Please remove all bintray binary · Issue #1743 · Homebrew/homebrew-php · GitHub
ちょっと乱暴なやり方だけど、メンドーだから--with-debug
無しでいいや!って場合は、PHPをインストールし直す方法もある
$ brew rm php56 && brew install php56
php56-opcache のインストールでエラーになる場合
PHPを--enable-opcache
オプション付きで入れると良いっぽい?
# http://php.net/manual/opcache.installation.php (PHP 5.5 & 5.6) brew update && brew upgrade brew rm php56 && brew install php56 --enable-opcache
[参考]: php56-opcache install fails · Issue #1320 · Homebrew/homebrew-php · GitHub
httpd.confのlibphp5.soのパスを変更する
Homebrewでhttpdを入れている場合httpd.conf
は、httpd24なら /usr/local/etc/apache2/2.4/
にある。
ファイルを開き「LoadModule php5_module」と書かれている所を変更。
# php56のパスに変更する
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
php.ini を変更する
php.iniは /usr/local/etc/php/56/php.ini
にある。
一緒に前のバージョンのphp.iniも開いて必要な部分をコピペすると楽。
タイムゾーンと文字関係の設定
date.timezone = Asia/Tokyo
; 中略
default_charset = "UTF-8"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
MySQLの設定
たぶん「mysql.default_socket」が設定されて無くてこのままだとMySQLに繋がらないので、前のphp.iniで同じ部分を探してきてmysql.sockのパスを追加する
[MySQL] ; 中略 ; MySQL defaults. ; http://php.net/mysql.default-socket ; ↓ mysql.sockのパスを追加 mysql.default_socket = /usr/local/var/mysql/mysql.sock
apacheとmysqlを起動させて確認
$ sudo apachectl start $ mysql.server start
<?php phpinfo(); ?>
を表示させてエラーがないこと・WordPressなどMySQLを使っているもをチェックしてMySQLがPHPから使えていることが確認できれば、これでPHPのバージョン変更は(たぶん)オケオケオッケー♪
感想
ほとんど、HomebrewでPHPのバージョンあげる所でのエラーが大変でした。
nodeやrubyとかと比べて、PHPはこのバージョンを切り替えるってのに凄く苦労するって意識が振り払えられないです。。。
[参考]
- OS X YosemiteにHomebrew + DropboxでPHP環境構築 〜Apache, PHP, MySQL, ComposerをインストールしてFuelPHPの設定まで - Qiita
- Homebrew で Apache, PHP, MySQL, Composer をインストールして Yii Framework を動かすところまで - Qiita
- Homebrew で「 Error: Formulae found in multiple taps 」と怒られたときの対処方法 | gotohayato
- PHP: 中心となる configure オプションのリスト - Manual
- Please remove all bintray binary · Issue #1743 · Homebrew/homebrew-php · GitHub
- php56-opcache install fails · Issue #1320 · Homebrew/homebrew-php · GitHub
- PHPのXdebug絡みのエラーを修正する | rythgs.co
~短期集中講座~ 土日でわかる PHPプログラミング教室 環境づくりからWebアプリが動くまでの2日間コース (Informatics&IDEA)
- 作者: フロイデ株式会社吉谷愛
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/11/26
- メディア: 単行本
- この商品を含むブログ (1件) を見る