PHP の設定が不明な時に叩いたコマンドたち
Homestead で導入された Ubuntu で PHP の設定がわからない時に叩いたコマンドなど。
はじめに
phpunit が失敗する。
$ phpunit --colors=always --coverage-html PHPUnit 5.7.23 by Sebastian Bergmann and contributors. Error: No code coverage driver is available
環境
Homestead v6.5.0
PHP のバージョン
$ php --version PHP 7.0.24-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 28 2017 16:20:59) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.24-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans with blackfire v1.18.0~linux-x64-non_zts70, https://blackfire.io, by SensioLabs
PHP の場所
$ which php /usr/bin/php
複数のバージョンが入っていそうだったので本当にそれか確認
$ ls -al /usr/bin | grep php lrwxrwxrwx 1 root root 21 Oct 16 12:39 php -> /etc/alternatives/php -rwxr-xr-x 1 root root 4488224 Sep 28 19:33 php5.6 -rwxr-xr-x 1 root root 4434992 Sep 28 17:01 php7.0 -rwxr-xr-x 1 root root 4571168 Sep 29 17:48 php7.1 -rwxr-xr-x 1 root root 4859104 Sep 28 17:19 php7.2
/etc/alternatives
の先にいるらしい。
$ ls -al /etc/alternatives | grep php lrwxrwxrwx 1 root root 15 Nov 26 13:36 php -> /usr/bin/php7.0
やっと/usr/bin/php7.0
が参照されていることがわかった。
alternatives で参照される PHP を切り替える
ググってみると、alternatives
という仕組みを使うと、複数のバージョン(PHPとかRuby)を切り替えて使えるそうな。
で、php
コマンドで呼ばれるPHPを切り替えるには、次のコマンドを実行する。
$ sudo update-alternatives --config php There are 4 choices for the alternative php (providing /usr/bin/php). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/php7.2 72 auto mode 1 /usr/bin/php5.6 56 manual mode * 2 /usr/bin/php7.0 70 manual mode 3 /usr/bin/php7.1 71 manual mode 4 /usr/bin/php7.2 72 manual mode Press <enter> to keep the current choice[*], or type selection number:
よしなに選択。執筆時点(2017/11/26)では Homestead で指定される PHP は 7.1 だった。 たまたま 7.0 で動かしたかったので、ここで切り替えた(上記結果は切り替えた後)。
php.ini の場所
$ php --ini Configuration File (php.ini) Path: /etc/php/7.0/cli Loaded Configuration File: /etc/php/7.0/cli/php.ini Scan for additional .ini files in: /etc/php/7.0/cli/conf.d Additional .ini files parsed: /etc/php/7.0/cli/conf.d/10-mysqlnd.ini, /etc/php/7.0/cli/conf.d/10-opcache.ini, /etc/php/7.0/cli/conf.d/10-pdo.ini, /etc/php/7.0/cli/conf.d/15-xml.ini, /etc/php/7.0/cli/conf.d/20-bcmath.ini, /etc/php/7.0/cli/conf.d/20-calendar.ini, /etc/php/7.0/cli/conf.d/20-ctype.ini, /etc/php/7.0/cli/conf.d/20-curl.ini, /etc/php/7.0/cli/conf.d/20-dom.ini, /etc/php/7.0/cli/conf.d/20-exif.ini, /etc/php/7.0/cli/conf.d/20-fileinfo.ini, /etc/php/7.0/cli/conf.d/20-ftp.ini, /etc/php/7.0/cli/conf.d/20-gd.ini, /etc/php/7.0/cli/conf.d/20-gettext.ini, /etc/php/7.0/cli/conf.d/20-iconv.ini, /etc/php/7.0/cli/conf.d/20-igbinary.ini, /etc/php/7.0/cli/conf.d/20-imap.ini, /etc/php/7.0/cli/conf.d/20-intl.ini, /etc/php/7.0/cli/conf.d/20-json.ini, /etc/php/7.0/cli/conf.d/20-mbstring.ini, /etc/php/7.0/cli/conf.d/20-msgpack.ini, /etc/php/7.0/cli/conf.d/20-mysqli.ini, /etc/php/7.0/cli/conf.d/20-pdo_mysql.ini, /etc/php/7.0/cli/conf.d/20-pdo_pgsql.ini, /etc/php/7.0/cli/conf.d/20-pdo_sqlite.ini, /etc/php/7.0/cli/conf.d/20-pgsql.ini, /etc/php/7.0/cli/conf.d/20-phar.ini, /etc/php/7.0/cli/conf.d/20-posix.ini, /etc/php/7.0/cli/conf.d/20-readline.ini, /etc/php/7.0/cli/conf.d/20-shmop.ini, /etc/php/7.0/cli/conf.d/20-simplexml.ini, /etc/php/7.0/cli/conf.d/20-soap.ini, /etc/php/7.0/cli/conf.d/20-sockets.ini, /etc/php/7.0/cli/conf.d/20-sqlite3.ini, /etc/php/7.0/cli/conf.d/20-sysvmsg.ini, /etc/php/7.0/cli/conf.d/20-sysvsem.ini, /etc/php/7.0/cli/conf.d/20-sysvshm.ini, /etc/php/7.0/cli/conf.d/20-tokenizer.ini, /etc/php/7.0/cli/conf.d/20-wddx.ini, /etc/php/7.0/cli/conf.d/20-xdebug.ini, /etc/php/7.0/cli/conf.d/20-xmlreader.ini, /etc/php/7.0/cli/conf.d/20-xmlwriter.ini, /etc/php/7.0/cli/conf.d/20-xsl.ini, /etc/php/7.0/cli/conf.d/20-zip.ini, /etc/php/7.0/cli/conf.d/25-memcached.ini, /etc/php/7.0/cli/conf.d/90-blackfire.ini
xdebug を使いたい
上の php --ini
で xdebug.ini が呼ばれていなくてどうやら使えなかったのだけど、fpm
にはいたので、
コピーしてきた(正しいかどうかはよくわからないけど・・・)
sudo cp /etc/php/7.0/fpm/conf.d/20-xdebug.ini /etc/php/7.0/cli/conf.d/20-xdebug.ini
おわりに
無事に phpunit が実行できた。