プロジェクトごとのインストールでphp-7バージョンのLaravel Homesteadを使用しようとしていますが、vagrant up
中にこのエラーが表示されます:
php5-fpm: unrecognized service
vagrant destroy
を試し、Vagrantボックスを再インストールしましたが、それでもこのエラーが発生します。
Homesteadをグローバルに使用してもエラーは発生しませんでした。
これはどのように修正できますか?
問題は、box: laravel/Homestead-7
がHomestead.yaml
で正しく設定されていても、composer laravel/Homestead
の依存関係はまだphp-5バージョンを使用していたことです。これはvendor/laravel/Homestead
のVagrantのプロビジョニングスクリプトがphp-のプロビジョニングスクリプトであることを意味します。 php-7ではなく5。
これは、composer依存関係にlaravel/Homestead
の特定のブランチを使用することで修正できます。
composer.json
で、laravel/Homestead
のカスタムリポジトリを追加します。
"repositories": [
{
"type": "git",
"url": "https://github.com/laravel/Homestead"
}
]
そして、特にphp-7
専用のlaravel/Homestead
ブランチが必要です。
"require-dev": {
"laravel/Homestead": "dev-php-7"
}
次に、composer update
を実行し、Vagrantボックスを再プロビジョニングすると、問題が修正されます。
[〜#〜] update [〜#〜]
laravel/Homestead
にはデフォルトでPHP 7.0があり、古いphp-7
ブランチは存在しません。この問題を解決するには、laravel/Homestead
を介してcomposer.json
の最新バージョンに更新する必要があります。
簡単な修正のために、私は laracastsからのこの回答 非常に役に立ちました:
cd ~/Homestead && git pull && vagrant destroy && vagrant box update && vagrant up
「破壊して再構築する」アプローチについてもう少し詳しく説明します...ホームステッドをインプレースでアップグレードするためのさまざまな手順よりも、これをPHP 5.6からPHP 7はウェブ上に浮かんでいます-それほど時間はかからず、終了するとすべてが「よりクリーン」に感じられます。
(もちろん、php.iniまたはその他のソフトウェアに変更を加えた場合は、これらを再度行う必要があります。)
準備
mysqldump -u root -p [dbname] > [dbname]-backup.sql
(デフォルトのHomesteadMySQLルートpwはsecret
です。)プロセス
vagrant halt
(まだ行っていない場合)vagrant destroy [VM id]
IDを追加することは、間違ったボックスを破壊することに対する予防策です。使用する vagrant global-status
ボックスのリストを取得します。最初の列には7文字の16進コードを使用します。git pull Origin master
(他の回答で述べたように、現在、個別のPHP7ブランチはありません)bash init.sh
ですが、コピーするファイルはすべてテンプレートであるため、これを実行して以前のバージョンを保持することもできません。vagrant box add laravel/Homestead
(これで 標準のインストール手順 に戻ります。これはVDSL接続で約10分かかります。ドキュメントで混乱している場合のフォルダマッピングの例を次に示します。
folders:
- map: ~/Dropbox/websites-Homestead
to: /home/vagrant/sites
sites:
- map: site1.app
to: /home/vagrant/sites/site1/public
- map: site2.app
to: /home/vagrant/sites/site2/public
databases:
- site1
- site2
つまり...私の実際のコードはコンピューターの〜/ Dropbox/website-Homestead/site1と/ site2にあり、それらの共通の親ディレクトリをVMの/ home/vagrant/sitesにマップしました。 Homesteadは、リストした名前で空のデータベースを作成します。
vagrant up
(これでプロビジョニングされます)vagrant ssh
cd sites
(コードが表示されるはずです)これで、次のことができるようになります。
$Sudo service php7.0-fpm status
* php-fpm7.0 is running
$php -v
PHP 7.0.2-4+deb.sury.org~trusty+1 (cli) ( NTS )
[...]
open / etc/nginx/sites-available/your_site_conf次に、この行を変更します。
fastcgi_pass: /var/run/php5-fpm.sock;
に:
fastcgi_pass: /var/run/php/php7.0-fpm.sock;
そして、nginxを再起動します。
注:これは永続的な解決策ではありません。プロビジョニングコマンドを実行すると、vagrantはそれ自体でセットアップを試み、最初の行で上書きされます。