El Capitanになったことだし、改めてPHP環境とVimでのPHP Lint環境を整える。
前提としてHomebrewはインストール済みとする。
この記事でインストールするもの。
PHPBrew
PHPのバージョン管理の為 PHPBrew をインストールする。phpenvでもいいと思うので違いの分かる人はお好みで。
PHPBrewのインストール
$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew $ chmod +x phpbrew $ sudo mv phpbrew /usr/local/bin/phpbrew $ phpbrew init
本来はmv先は /usr/bin/ なのだが、El Capitanにアップデートしてしまったので /usr/local/bin/ にした。
.bashrc, または .zshrc にphpbrewへのPATHを追加する以下のコマンドを追加する。
source ~/.phpbrew/bashrc
PHPのインストール
$ phpbrew update # PHPバージョンリストの更新 $ phpbrew known # インストール可能なPHPバージョンリストの出力 $ phpbrew install 5.6.14 +default # PHP 5.6.14 を標準拡張モジュールのセットと共にインストールする
+default
はPHPに併せて拡張モジュールをインストール指定するオプション。phpbrew variant
コマンドで拡張モジュールセットの確認が可能。
拡張モジュールがなかったり指定し忘れた場合には後述のLintツールインストール時にエラーが出る場合もある。良くわからない場合には +default
を付けておく。
mysqlモジュール等が必要な場合には、+default+mysql
または+default+dbs
などと指定するとよい。
$ phpbrew variants
Variants:
all, apxs2, bcmath, bz2, calendar, cgi, cli, ctype, dba, debug, dom, embed,
exif, fileinfo, filter, fpm, ftp, gcov, gd, gettext, hash, iconv, icu,
imap, intl, ipc, ipv6, json, kerberos, mbregex, mbstring, mcrypt, mhash,
mysql, openssl, pcntl, pcre, pdo, pgsql, phar, posix, readline, session,
soap, sockets, sqlite, tidy, tokenizer, xml_all, xmlrpc, zip, zlib, gmp
Virtual variants:
dbs: sqlite, mysql, pgsql, pdo
mb: mbstring, mbregex
neutral:
default: filter, dom, bcmath, ctype, mhash, fileinfo, pdo, posix, ipc,
pcntl, bz2, zip, cli, json, mbstring, mbregex, calendar, sockets, readline,
xml_all
PHPBrewでインストールしたPHPの使用
$ phpbrew use 5.6.14 # 一時的に5.6.14を利用する場合 $ phpbrew switch 5.6.14 # デフォルトで5.6.14を利用する場合 $ phpbrew list # 現在の利用バージョンを確認する
システム上のPHPを使わず、switchで最新のPHPを指定しておくといい。 各directoryでのPHPバージョン指定は開発する環境にあわせて適宜useする。
configure: error: Cannot find OpenSSL's <evp.h> が出てインストールできない場合
Yosemite以降で発生する既知の不具合の模様。El Capitanでも同様のエラーを確認。 Yosemite DP - configure: error: Cannot find OpenSSL's <evp.h> · Issue #1181 · Homebrew/homebrew-php · GitHub
下記コマンドを試す。
xcode-select --install
それでも解消されない場合には、恐らくopensslをhomebrewからインストール済みかと思うので下記を試す。
$ brew link openssl
Warning: openssl is keg-only and must be linked with --force
Note that doing so can interfere with building software.
警告の通り、
$ brew link openssl --force
を実行するとOpenSSLのエラーは解消されるはず。
configure: error: mcrypt.h not found. Please reinstall libmcrypt. が出てインストールできない場合
警告通りlibmcryptを再インストールする。
$ brew install libmcrypt
Composer
インストール
Pearはもう全く更新されてないようなのでComposerによるパッケージ管理を行う。 PHPBrewのコマンドからインストールできる。
$ phpbrew install-composer
PHP_CodeSniffer
composerからPHP_CodeSnifferをインストールする。PHP_CodeSnifferは構文チェックを中心としたLintツールとなる。 構文エラーはすべてこいつが指摘してくれるのでPHP書く人は必ず入れましょう。 Home · squizlabs/PHP_CodeSniffer Wiki · GitHub
インストール
composer global require "squizlabs/php_codesniffer=*"
PHP Mess Detector
こっちは未使用変数や、循環的複雑度が多かったり、ネストが多かったりと、構文は問題がなくてもバグの原因になりそうな箇所の警告を出してくれるLintツール。 デフォルトでは変数/クラスの名称が短かったり長かったりする場合にも警告となるが、ここはリーダブルコード的には多少長くてもよいケースもあると思うので適宜ルールをカスタマイズした方がよいかも。 PHPMD - PHP Mess Detector
インストール
composer global require "phpmd/phpmd"
Syntastic
Vimで各言語ごとにLintツールを実行してくれる Vim plugin としてSyntasticをインストールする。基本Syntasticは保存時に稼働する。
インストール
neobundleでインストールする
NeoBundle 'scrooloose/syntastic'
.vimrcへの設定
phpcsはPSR-2, phpmdは標準ルールセットでチェックするとする。
" for syntastic ----------------------- let g:syntastic_mode_map = { \ 'mode': 'active', \ 'active_filetypes': ['php'] \} let g:syntastic_auto_loc_list = 1 let g:syntastic_php_checkers = ['phpcs', 'phpmd'] let g:syntastic_php_phpcs_args='--standard=psr2’
g:syntastic_php_checkers = ['phpcs', 'phpmd']
でphpのcheckerを配列指定している。配列の先頭から順にチェックされ、まずはphpcs。phpcsで警告が0になればphpmdと順にチェックしてくれる。
ちなみにphpcsで警告があるけれどもphpmdでチェックしたい場合には、 :Syntastic phpmd
と叩けばphpmdの警告を出してくれる。
カスタムルールセットを指定する場合
それぞれXMLでの記述でルールセットを変更可能。長くなるので各ルールセットの作成は公式ドキュメントを参照。
SyntasticでのXML指定は以下のような形でパス指定する
let g:syntastic_php_phpcs_args='--standard=$HOME/.config/phpcs.xml' let g:syntastic_php_phpmd_post_args='$HOME/.config/phpmd.xml'
これでVImで保存時に自動でLintツールが動作するようになる。

- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログを見る