現象

Homestead.yamlでPHPのバーション指定しても
デフォルトのバージョンになってしまう

Homestead.yaml
    - map: xxx.test
      to: /home/vagrant/code/xxx/html
      php: "5.6"

URLからxxx.testを開いてphpinfo(); を表示させると
デフォルトのPHP7.1が表示されてしまう

なんで?

公式に書いてある通りにやったはずなのに・・・
https://readouble.com/laravel/5.4/ja/homestead.html

原因

1日かけて、英語のサイトも目がつるぐらい探しても見当たらず、
諦めかけた時に、ふとバージョンが気になった(いや、アドバイスをもらった)

WINDOWSではPHPバージョンの切り替えはできたのに
MACだけでできないっておかしくないか?

は?もしかしてバージョンが違うんじゃ???

調べた結果

WINDOWS        MAC
laravel/homestead (virtualbox, 5.0.1) laravel/homestead (virtualbox, 5.2.0)
Vagrant 2.0.1 Vagrant 2.0.3
Laravel Homestead 7.0.1 Laravel Homestead 5.4.0

どう考えてもHomesteadのバージョンおかしいやろ
でも、公式に書かれたままやっただけやのに・・・

// クローンしたいリリースバージョン
git checkout v5.4.0`

これが同じページに書かれてるから混乱するねん

Homestead6から、同一仮想マシン上での複数PHPバージョンをサポートを開始しました。
Homestead.yamlファイルで、特定のサイトでどのバージョンのPHPを使用するのかを指定できます。
利用できるPHPバージョンは、"5.6""7.0""7.1"です。

でHomesteadのバージョンってどこで分かるねん?
って調べたらまさかのファイルを直接テキストで見るなんてびっくりや

/Users/*username*/Homestead/bin/homestead

$app = new Symfony\Component\Console\Application('Laravel Homestead', '5.4.0');

対応

ボックス入れるところからやり直しや

/ boxの削除 /
vagrant box remove **** 

/ boxの追加(バージョン指定) /
vagrant box add laravel/homestead --box-version 5.0.1

/ ディレクトリ移動 /
cd ~

/ 前の関係ファイルを削除(隠しファイルも含めて) /
/Users/*username*/Homestead 
をディレクトリごと削除

/ Homesteadclone /
git clone https://github.com/laravel/homestead.git Homestead

/ 移動 /
cd Homestead

/ クローンしたいリリースバージョン /
git checkout v7.0.1

/ Homestead.yaml生成 /
bash init.sh

/ Homestead.yaml編集 /
    - map: xxx.test
      to: /home/vagrant/code/xxx/html
      php: "5.6"

/ homesteadのstatusを確認 /
vagrant global-status

/ 前のやつが残ってるのでIDを指定して削除 /
vagrant destroy xxxxxx

/ virtualboxを確認 /
vboxmanage list vms

/ 前のやつを掴んでるので削除 /
VirtualBox.app起動してhomestead-7を除去

/ ようやく起動 /
vagrant up

ここまでやってxxx.testを見たら、無事PHPバージョン指定が5.6になってた!!!

こういう細かいトラブルシューティングがなかなかズバリ見つからんからめっちゃ時間かかったわ

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.