valet 使ってる人、僕は主に laravel で使ってるんですけど。
同じところでハマった人のために、メモります。
laravel の最新バージョンが PHP7.1 でじゃないと動かないので、
php 自体は Homebrew で 7.1 にしました。
その辺りはたくさん記事が出てますが、一つ付け加えると。
--with-fpm
はbrew install php71
で一緒に落とせるので不要です。
PHP および PHP-FPM を を7.1 にあげた後に、valet の環境も 7.1 対応したいので。
composer global update
の後
valet install
すると。
Error: homebrew/dupes was deprecated. This tap is now empty as all its formulae were migrated.
Error: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Unable to determine linked PHP.
などが出て valet 動かない。
原因から言うと、valet のソースコードが
~/.composer/vendor/laravel/valet/cli/Valet/
以下にあるんですけど、その中の Brew.php に、対応する php のバージョンの配列があるんですね。
55 行目あたり。
return collect(['php', 'php72', 'php71', 'php70', 'php56']);
んで エラーの出てる 186 行目あたりで
return strpos($resolvedPath, "/$version/") !== false;
がことごとく false になっているのが原因なんですけど、この行の1行上で
var_dump($version);
ってしてやると "php@7.1"
って返ってきます、配列内にこれがないのが原因です。
なので、55行目に
return collect(['php@7.1', 'php72', 'php71', 'php70', 'php56']);
// return collect(['php', 'php72', 'php71', 'php70', 'php56']);
として、無理やり足して、なおかつ
PHP Notice: Undefined index: php@7.1 in ~/.composer/vendor/laravel/valet/cli/Valet/PhpFpm.php on line 116
「インデックスがないよー」と出るので
今度は ~/.composer/vendor/laravel/valet/cli/Valet/PhpFpm.php
に
function fpmConfigPath()
{
$confLookup = [
'php@7.1' => '/usr/local/etc/php/7.1/php-fpm.d/www.conf', // <= こいつを足す
'php' => '/usr/local/etc/php/7.2/php-fpm.d/www.conf',
'php72' => '/usr/local/etc/php/7.2/php-fpm.d/www.conf',
'php71' => '/usr/local/etc/php/7.1/php-fpm.d/www.conf',
'php70' => '/usr/local/etc/php/7.0/php-fpm.d/www.conf',
'php56' => '/usr/local/etc/php/5.6/php-fpm.conf',
];
return $confLookup[$this->brew->linkedPhp()];
}
で valet install したら、問題なくいけました。
今の所動いてますが、不具合があったら報告します。
おそらく PHP7.2系でも同じように行けると思います。