在尝试在每个项目的安装中使用php-7版本的Laravel Homestead时,我在vagrant up
期间看到了这个错误:
php5-fpm: unrecognized service
我已经尝试了vagrant destroy
并重新安装了Vagrant框,但它仍然会回到此错误。
在全球范围内使用Homestead时,我没有收到错误。
如何解决这个问题?
答案 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或任何其他软件进行了更改,则需要再次执行此操作。)
准备
mysqldump -u root -p [dbname] > [dbname]-backup.sql
(默认的宅基地MySQL根pw为secret
。)<强>过程强>
vagrant halt
(如果您还没有)vagrant destroy [VM id]
添加ID是防止破坏错误框的预防措施。使用vagrant global-status
获取您的方框列表;在第一列中使用7个字符的十六进制代码。git pull origin master
(如其他答案所述,现在没有单独的PHP7分支)bash init.sh
,但它复制的文件都是模板,所以你也做不到这个并保留以前的版本。vagrant box add laravel/homestead
(现在我们重新使用standard installation instructions。这在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 / websites-homestead / site1和/ site2中,我已将其公共父目录映射到VM上的/ home / vagrant / sites。 Homestead将使用您列出的名称创建空数据库。
vagrant up
(此&#39; ll配置它)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 )
[...]
答案 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将尝试自行设置并将用第一行覆盖。