LoginSignup
0
0

More than 5 years have passed since last update.

staticmockをmacOSで動かすためにPHP7とrunkitをインストールする

Last updated at Posted at 2019-02-14

PHPで単体テストをするとき、 単体テストフレームワークPHPUnit と static methodsの挿げ替えに tototoshi/staticmock を利用している。

普段の開発サーバーで意識していなかったが、macOSで開発環境を構築するときに手間取った。

macOSにビルトインされているPHPは扱いづらいため、新たに homebrew でPHPをインストールする

$ brew search php
==> Formulae
brew-php-switcher           php-code-sniffer            php@7.1                     phplint                     phpmyadmin
php                         php-cs-fixer                php@7.2                     phpmd                       phpunit

==> Casks
eclipse-php            eclipse-php            netbeans-php           netbeans-php           phpstorm               phpstorm

特に理由がなければ、 php フォーミュラをインストールすれば良い(私は php@7.1 を利用)。 php フォーミュラを選んだ場合、2019年2月14日段階では、PHP 7.3.2がインストールされる。

php@7.1 を選んだ場合、 brew link されないのでCLIの出力に従ってPATHに追加すること。

tototoshi/staticmock は実装の書き換えでrunkitを使用しているため、 runkit のインストールを別途行う必要がある。ただし、peclのrunkitはPHP7に対応していないので、runkit7/runki7からインストールする。

インストール方法はrunkit7のリポジトリに従えば良い。runkit7のインストール前に、phpのパスがHomebrewでインストールされたパスであることを確認すること。

$ ls -al $(which php)
-r-xr-xr-x  1 tamanobi  staff  11559124  2 14 10:39 /usr/local/opt/php@7.1/bin/php
$ brew --prefix php@7.1
/usr/local/opt/php@7.1

Homebrewでインストールしたphpに、PHP拡張を伝えるためにphp.iniを編集する。php.iniのパスは php --ini で調べられる。

$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/7.1
Loaded Configuration File:         /usr/local/etc/php/7.1/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.1/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.1/conf.d/ext-opcache.ini

php.iniを開くと extension=msql.so などのサンプルを見ながら extension=runkit.so を追加する。

最後に以下のコマンドで runkit が使えるようになっているか確認する。 bool(true) となれば読み込まれている。

$ php -r 'var_dump(extension_loaded("runkit"));'
bool(true)

もし、ApacheやNginxでPHPを利用している場合は、CLIと違ってリロードが必要。

0
0
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
0
0