tanaka's Programming Memo

プログラミングについてのメモ。

mac OS 10.11 のapacheでimagick(2016/3/9更新)

mac OSを10.11にアップデートしたら、ローカルのapachePHPやimagickが動かなくなったので再設定をしました。

PHPで実行する際に警告が表示される場合の修正方法を追記しました(2016/3/9)。

Xcodeのバージョンアップ

php56-imagickのインストールXcodeのバージョンでエラーが発生しないようにXcodeを最新版にしておきます。Xcodeのバージョンが古い場合は、以下の手順で更新します。

  1. Finderを開く
  2. アプリケーションフォルダーのXcodeをゴミ箱にドラッグ&ドロップ
  3. https://developer.apple.com/downloads/ を開いてサインイン
  4. Xcode7.2の左の+を押して開いて、Xcode_7.2.dmgをクリックしてダウンロード
  5. ダウンロードしたら実行して、Xcodeをアプリケーションフォルダーにドラッグ&ドロップ
  6. コピーが完了したら、Xcodeを起動
  7. 検証やインストールなどが実施されるので、起動が完了するまで指示に従って操作する

Xcodeの更新(2016/3/9追加)

Xcodeの必要なパッケージを揃えるために以下を実行します。

  • ターミナルを起動して、以下を実行
xcode-select --install
  • ウィンドウが表示されたら「インストール」を押す
  • ターミナルで以下を実行して、xcodeを更新する
brew upgrade

brewの更新

ターミナルで以下を実行して、パスのパーミッションの設定とbrewの更新を行います。念のため、brew updateは2回行います。

sudo chown -R $(whoami):admin /usr/local
brew update
brew update
brew upgrade
  • ターミナルで「brew doctor」を実行して、消せるwarningは消しておく
brew doctor
  • 以下が表示されたら完了
Your system is ready to brew.

上記で、警告やエラーが表示されたら、画面の指示に従って解消してください。解消したら、再び「brew doctor」を実行して、上記のメッセージが表示されたら完了です。

php5.6の再インストール

  • php5.6と依存関係を削除するために、ターミナルで以下を実行
sudo brew rm php56 && brew deps php56 | xargs brew rm
brew install bzip2
brew install php56

PHP5.6をapacheに設定

php56のインストール時に表示されるメッセージに従って設定を行います。

  • ターミナルから以下でapache2の設定を起動
sudo vi /etc/apache2/httpd.conf
  • [esc][/][p][h][p][Enter]で「php」を検索して、LoadModule php5_moduleから始まる行を以下のようにする
LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so
  • [esc][:][w][q][Enter]で保存
  • 以下でapache2を再起動
sudo apachectl restart

以上で、PHP5.6の最新版がインストールされます。

xdebugとimagickをインストール

xdebugでエラーが発生したので再設定します。

  • 以下をターミナルで実行
brew install php56-xdebug
brew install --build-from-source php56-imagick
vi /usr/local/etc/php/5.6/php.ini
  • 「zend_extensionx」や「xdebug」から始まる行があったら、不要になったのでコメントアウトする
  • apache2を再起動する
sudo apachectl restart

phpを実行すると毎回警告が表示される場合の対処方法

3/9に更新した手順であれば問題ないと思いますが、それ以前の方法でImagickをインストールした場合、PHPを実行するたびに以下のような警告が表示されるかもしれません。

PHP Warning: Version warning: Imagick was compiled against Image Magick version 1682 but version 1683 is loaded. Imagick will run but may behave surprisingly in Unknown on line 0

これを修正する方法です。

何を言っているのか

Imagickは、Image Magick version 1682用にビルドされているが、読み込まれているImage Magickはversion 1683である。Imagickは動くだろうが、不測の動作をするかもしれない。

だそうです。

解決策

php70-imagick has warnings · Issue #2766 · Homebrew/homebrew-php · GitHub に解決策が紹介されていました。

ターミナルから、以下の作業をします。

OS Xのアップグレード

OS Xをバージョンアップしていた場合、「configure: error: Cannot find lib」というエラーが出る可能性があるので、legacy-homebrew/Troubleshooting.md at master · Homebrew/legacy-homebrew · GitHub を参考に環境を更新します。

xcode-select --install

ウィンドウが表示されたら「インストール」を押してください。

完了したら、以下でOS Xを更新します。

brew upgrade

1時間程度かかる場合があるので気長に待ってください。

Homebrewの更新

その他の環境も最新にします。以下のように、brew updateを2回やって、更新がなくなったら、brew doctorで何か警告が表示されたらそれを実行しましょう。

brew update
brew update
brew doctor

brew doctorの結果が以下のようであれば準備完了です。

Your system is ready to brew.

それ以外の警告やエラーが表示された場合は、実行するべきコマンドが表示されるので、それを実行して、上記の表示になるまで[brew doctor]を実行してください。

imagickの更新

以下を実行します。

brew rm php56-imagick
brew install --build-from-source php56-imagick

更新

Apacheなどが起動していたら、再起動します。

sudo apachectl restart

以上で警告が表示されなくなりました。