Laravel Homestead php-7" php5-fpm:无法识别的服务"关于流浪汉

时间:2015-11-18 22:00:46

标签: php laravel homestead php-7

在尝试在每个项目的安装中使用php-7版本的Laravel Homestead时,我在vagrant up期间看到了这个错误:

php5-fpm: unrecognized service

我已经尝试了vagrant destroy并重新安装了Vagrant框,但它仍然会回到此错误。

在全球范围内使用Homestead时,我没有收到错误。

如何解决这个问题?

4 个答案:

答案 0 :(得分:14)

问题是虽然在box: laravel/homestead-7中正确设置Homestead.yaml,但laravel/homestead的作曲家依赖仍然使用php-5版本。这意味着vendor/laravel/homestead中Vagrant的配置脚本是php-5而不是php-7的配置脚本。

可以通过使用laravel/homestead的特定分支来修复作曲家依赖。

composer.json中,为laravel/homestead添加自定义存储库:

"repositories": [
    {
        "type": "git",
        "url": "https://github.com/laravel/homestead"
    }
]

并且需要专门针对php-7的{​​{1}}分支:

laravel/homestead

然后"require-dev": { "laravel/homestead": "dev-php-7" } 并重新配置Vagrant框将解决问题。

<强>更新

composer update默认情况下为PHP 7.0,旧的laravel/homestead分支不再存在。要解决此问题,您只需通过php-7更新到laravel/homestead的最新版本。

答案 1 :(得分:9)

为了快速解决问题,我发现this answer from laracasts非常有用:

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

答案 2 :(得分:4)

详细说明&#34;只需将其销毁并再次构建&#34;方法......我赞成这一点,因为各种指令从PHP 5.6升级到PHP 7,它们在网络上漂浮 - 它不需要很长时间,而且一切都感觉更清洁&#34 ;当你完成了。

(当然,如果您对php.ini或任何其他软件进行了更改,则需要再次执行此操作。)

准备

  • 您的项目应该在主机上与Vagrant框共享的目录中,而不是在Vagrant框上,因为它将要被删除
  • 将虚拟ssh导入您的虚拟机并将每个站点数据库的mysqldump放入站点目录中,例如: mysqldump -u root -p [dbname] > [dbname]-backup.sql(默认的宅基地MySQL根pw为secret。)
  • 备份所有内容(例如Mac Time Machine和/或执行我的操作并将项目保存在Dropbox文件夹中)。当然,你的git存储库也安全地存储在某个地方了吗?
  • Virtualbox用户:导出整个盒子没有坏处,以防你卡住它并想要对它进行处理(拍摄快照不够,因为当VM被销毁时也会被擦除。)

<强>过程

  • vagrant halt(如果您还没有)
  • vagrant destroy [VM id]添加ID是防止破坏错误框的预防措施。使用vagrant global-status获取您的方框列表;在第一列中使用7个字符的十六进制代码。
  • 主机PC / Mac上的〜/ Homestead中的
  • git pull origin master(如其他答案所述,现在没有单独的PHP7分支)
  • 可以重新运行bash脚本来创建一个干净的Homestead.yaml文件等 - bash init.sh,但它复制的文件都是模板,所以你也做不到这个并保留以前的版本。
  • vagrant box add laravel/homestead(现在我们重新使用standard installation instructions。这在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 / websites-homestead / site1和/ site2中,我已将其公共父目录映射到VM上的/ home / vagrant / sites。 Homestead将使用您列出的名称创建空数据库。

  • vagrant up(此&#39; ll配置它)
  • vagrant ssh
  • cd sites(您应该可以看到您的代码)
  • 使用`mysql -u root -p site1&lt;恢复数据库站点1-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 )
[...]

答案 3 :(得分:2)

打开 / 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将尝试自行设置并将用第一行覆盖。