Laravel 宅基地 php-7 "php5-fpm: unrecognized service" 在 vagrant up
Laravel Homestead php-7 "php5-fpm: unrecognized service" on vagrant up
尝试在每个项目安装中使用 php-7 版本的 Laravel Homestead 时,我在 vagrant up
期间看到此错误:
php5-fpm: unrecognized service
我已经尝试 vagrant destroy
并重新安装 Vagrant box,但它仍然返回此错误。
我在全局使用 Homestead 时没有收到错误。
如何解决这个问题?
问题在于,虽然 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
分支专门用于 laravel/homestead
:
"require-dev": {
"laravel/homestead": "dev-php-7"
}
然后 composer update
并重新配置 Vagrant box 将解决问题。
更新
laravel/homestead
现在默认有 PHP 7.0,旧的 php-7
分支不再存在。要解决此问题,您只需通过 composer.json
.
更新至最新版本的 laravel/homestead
为了快速修复,我发现 this answer from laracasts 很有帮助:
cd ~/Homestead && git pull && vagrant destroy && vagrant box update && vagrant up
详细说明 "just destroy it and build again" 方法......我更喜欢这个,而不是从 PHP 5.6 到 PHP 7 的就地 Homestead 升级的各种说明在网络上漂浮 - 不会花很长时间,而且当你完成后一切都会感觉 "cleaner"。
(当然,如果您对 php.ini 或任何其他软件进行了更改,则需要再次执行这些操作。)
准备
- 你的项目应该在主机上与 Vagrant box 共享的目录中,而不是在 Vagrant box 仅 上,因为它即将被擦除
- vagrant ssh 进入您的 VM 并将每个站点的数据库转储 mysql 转储到站点目录中,例如
mysqldump -u root -p [dbname] > [dbname]-backup.sql
(默认宅基地MySQL根密码为secret
。)
- 对所有内容进行备份(例如 Mac Time Machine and/or 做我做的事并将您的项目保存在 Dropbox 文件夹中)。当然,您的 git 存储库也安全地存储在某个地方?
- Virtualbox 用户:导出整个盒子没有坏处,以防您卡住并想返回它(拍摄快照是不够的,因为当 VM 被销毁时,任何快照也会被擦除。)
进程
vagrant halt
(如果您还没有)
vagrant destroy [VM id]
添加ID是为了防止破坏错误的盒子。使用 vagrant global-status
获取您的盒子列表;在第一列中使用 7 个字符的十六进制代码。
- 在主机上的 ~/Homestead PC/Mac
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
(这将提供它)
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 )
[...]
打开 /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 将尝试自行设置并覆盖第一行。
尝试在每个项目安装中使用 php-7 版本的 Laravel Homestead 时,我在 vagrant up
期间看到此错误:
php5-fpm: unrecognized service
我已经尝试 vagrant destroy
并重新安装 Vagrant box,但它仍然返回此错误。
我在全局使用 Homestead 时没有收到错误。
如何解决这个问题?
问题在于,虽然 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
分支专门用于 laravel/homestead
:
"require-dev": {
"laravel/homestead": "dev-php-7"
}
然后 composer update
并重新配置 Vagrant box 将解决问题。
更新
laravel/homestead
现在默认有 PHP 7.0,旧的 php-7
分支不再存在。要解决此问题,您只需通过 composer.json
.
laravel/homestead
为了快速修复,我发现 this answer from laracasts 很有帮助:
cd ~/Homestead && git pull && vagrant destroy && vagrant box update && vagrant up
详细说明 "just destroy it and build again" 方法......我更喜欢这个,而不是从 PHP 5.6 到 PHP 7 的就地 Homestead 升级的各种说明在网络上漂浮 - 不会花很长时间,而且当你完成后一切都会感觉 "cleaner"。
(当然,如果您对 php.ini 或任何其他软件进行了更改,则需要再次执行这些操作。)
准备
- 你的项目应该在主机上与 Vagrant box 共享的目录中,而不是在 Vagrant box 仅 上,因为它即将被擦除
- vagrant ssh 进入您的 VM 并将每个站点的数据库转储 mysql 转储到站点目录中,例如
mysqldump -u root -p [dbname] > [dbname]-backup.sql
(默认宅基地MySQL根密码为secret
。) - 对所有内容进行备份(例如 Mac Time Machine and/or 做我做的事并将您的项目保存在 Dropbox 文件夹中)。当然,您的 git 存储库也安全地存储在某个地方?
- Virtualbox 用户:导出整个盒子没有坏处,以防您卡住并想返回它(拍摄快照是不够的,因为当 VM 被销毁时,任何快照也会被擦除。)
进程
vagrant halt
(如果您还没有)vagrant destroy [VM id]
添加ID是为了防止破坏错误的盒子。使用vagrant global-status
获取您的盒子列表;在第一列中使用 7 个字符的十六进制代码。- 在主机上的 ~/Homestead PC/Mac
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
(这将提供它)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 )
[...]
打开 /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 将尝试自行设置并覆盖第一行。