web-dev-qa-db-ja.com

Laravel Homestead php-7 "php5-fpm:unrecognized service" on vagrant up

プロジェクトごとのインストールでphp-7バージョンのLaravel Homesteadを使用しようとしていますが、vagrant up中にこのエラーが表示されます:

php5-fpm: unrecognized service

vagrant destroyを試し、Vagrantボックスを再インストールしましたが、それでもこのエラーが発生します。

Homesteadをグローバルに使用してもエラーは発生しませんでした。

これはどのように修正できますか?

12

問題は、box: laravel/Homestead-7Homestead.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の最新バージョンに更新する必要があります。

14

簡単な修正のために、私は laracastsからのこの回答 非常に役に立ちました:

cd ~/Homestead && git pull && vagrant destroy && vagrant box update && vagrant up
9
Bluesail20

「破壊して再構築する」アプローチについてもう少し詳しく説明します...ホームステッドをインプレースでアップグレードするためのさまざまな手順よりも、これをPHP 5.6からPHP 7はウェブ上に浮かんでいます-それほど時間はかからず、終了するとすべてが「よりクリーン」に感じられます。

(もちろん、php.iniまたはその他のソフトウェアに変更を加えた場合は、これらを再度行う必要があります。)

準備

  • プロジェクトは、Vagrantボックスのみではなく、Vagrantボックスと共有されているホストコンピューター上のディレクトリに配置する必要があります。これは、ワイプされようとしているためです。
  • vagrantsshをVMに入れ、各サイトのデータベースのmysqldumpをサイトディレクトリに配置します。例:mysqldump -u root -p [dbname] > [dbname]-backup.sql(デフォルトのHomesteadMySQLルートpwはsecretです。)
  • すべてのバックアップを取ります(たとえば、Mac Time Machineや、私が行っていることを実行して、プロジェクトをDropboxフォルダーに保存します)。もちろん、gitリポジトリも安全にどこかに保存されていますか?
  • Virtualboxユーザー:行き詰まってボックスに行きたい場合にボックス全体をエクスポートしても害はありません(VMが破壊されたときにもワイプされるため、スナップショットを撮るだけでは不十分です。)

プロセス

  • vagrant halt(まだ行っていない場合)
  • vagrant destroy [VM id] IDを追加することは、間違ったボックスを破壊することに対する予防策です。使用する vagrant global-statusボックスのリストを取得します。最初の列には7文字の16進コードを使用します。
  • ホストPC/Macの〜/ Homesteadでgit pull Origin master(他の回答で述べたように、現在、個別のPHP7ブランチはありません)
  • youcanbashスクリプトを再実行して、クリーンなHomestead.yamlファイルなどを作成します。--bash init.shですが、コピーするファイルはすべてテンプレートであるため、これを実行して以前のバージョンを保持することもできません。
  • vagrant box add laravel/Homestead(これで 標準のインストール手順 に戻ります。これはVDSL接続で約10分かかります。
  • mac/PCで〜/ .Homestead /Homestead.yamlを編集します。

ドキュメントで混乱している場合のフォルダマッピングの例を次に示します。

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(コードが表示されるはずです)
  • `mysql -u root -p site1 <site1-backup.sqlを使用してデータベースを復元します
  • コンピュータに/ etc/hostsエントリがある場合は、サイトを表示できるはずです。データベースに接続できない場合は、.envファイルを確認してください。

これで、次のことができるようになります。

$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 )
[...]
4
William Turrell

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はそれ自体でセットアップを試み、最初の行で上書きされます。