1、在 Homestead 中执行 composer update 报错:Your requirements could not be resolved to an installable set of packages.。原因在于 PHP 版本为 8.0 ,而软件包的版本依赖于 7。如图1

图1

vagrant@homestead:~/Code/laravel-8-shop$ composer update
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires laravel/nova ^3.14 -> satisfiable by laravel/nova[v3.14.0].
    - laravel/nova v3.14.0 requires php ^7.2.5 -> your php version (8.0.1) does not satisfy that requirement.
  Problem 2
    - Root composer.json requires laravel/ui 3.0 -> satisfiable by laravel/ui[v3.0.0].
    - laravel/ui v3.0.0 requires php ^7.3 -> your php version (8.0.1) does not satisfy that requirement.


2、参考:https://learnku.com/docs/laravel/5.8/homestead/3882#multiple-php-versions 。Homestead 6 在同一个虚拟机上引入了对多个 PHP 版本的支持。你可以在你的 Homestead.yaml 文件中指定要用于给定站点的 PHP 版本。

sites:
    - map: laravel-8-shop-homestead.test
      to: /home/vagrant/Code/laravel-8-shop/public
      php: "7.4"

3、退出 vagrant 后,执行命令:cd ~/Homestead && vagrant provision && vagrant up。

vagrant@homestead:~/Code/laravel-8-shop$ ls /etc/php
5.6  7.0  7.1  7.2  7.3  7.4  8.0

4、重新进入后,发现 共享文件夹 竟然为空。如图2

图2

5、决定还原第二步骤所做的更改。仍然为空。怀疑与开启 NFS 有关系,决定去掉:type: “nfs”。

folders:
    - map: E:/wwwroot/vagrant
      to: /home/vagrant/Code
      type: "nfs"

6、重启并应用虚拟机,执行命令:vagrant reload –provision

Lenovo@DESKTOP-QLPK8QM MINGW64 ~/Homestead (v12.1.0)
$ vagrant reload --provision
==> homestead: Attempting graceful shutdown of VM...
    homestead: Guest communication could not be established! This is usually because
    homestead: SSH is not running, the authentication information was changed,
    homestead: or some other networking issue. Vagrant will force halt, if
    homestead: capable.
==> homestead: Forcing shutdown of VM...
==> homestead: Checking if box 'lc/homestead' version '11.0.0' is up to date...
==> homestead: Clearing any previously set forwarded ports...
==> homestead: Clearing any previously set network interfaces...
==> homestead: Preparing network interfaces based on configuration...
    homestead: Adapter 1: nat
    homestead: Adapter 2: hostonly
==> homestead: Forwarding ports...
    homestead: 80 (guest) => 8000 (host) (adapter 1)
    homestead: 443 (guest) => 44300 (host) (adapter 1)
    homestead: 3306 (guest) => 33060 (host) (adapter 1)
    homestead: 4040 (guest) => 4040 (host) (adapter 1)
    homestead: 5432 (guest) => 54320 (host) (adapter 1)
    homestead: 8025 (guest) => 8025 (host) (adapter 1)
    homestead: 9600 (guest) => 9600 (host) (adapter 1)
    homestead: 27017 (guest) => 27017 (host) (adapter 1)
    homestead: 22 (guest) => 2222 (host) (adapter 1)
==> homestead: Running 'pre-boot' VM customizations...
==> homestead: Booting VM...
==> homestead: Waiting for machine to boot. This may take a few minutes...
    homestead: SSH address: 127.0.0.1:2222
    homestead: SSH username: vagrant
    homestead: SSH auth method: private key
    homestead: Warning: Connection aborted. Retrying...
    homestead: Warning: Connection reset. Retrying...
    homestead:
    homestead: Vagrant insecure key detected. Vagrant will automatically replace
    homestead: this with a newly generated keypair for better security.
    homestead:
    homestead: Inserting generated public key within guest...
    homestead: Removing insecure key from the guest if it's present...
    homestead: Key inserted! Disconnecting and reconnecting using new SSH key...
==> homestead: Machine booted and ready!
==> homestead: Checking for guest additions in VM...
==> homestead: Setting hostname...
==> homestead: Configuring and enabling network interfaces...
==> homestead: Mounting shared folders...
    homestead: /vagrant => C:/Users/Lenovo/Homestead
    homestead: /home/vagrant/Code => E:/wwwroot/vagrant
==> homestead: Detected mount owner ID within mount options. (uid: 1000 guestpath: /home/vagrant/Code)
==> homestead: Detected mount group ID within mount options. (gid: 1000 guestpath: /home/vagrant/Code)
==> homestead: Running provisioner: file...
    homestead: C:/Users/Lenovo/Homestead/aliases => /tmp/bash_aliases
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
    homestead:
    homestead: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYbShMjEO5Jw9GNXNh7Nh7kqXtzuMRsj6EzOkaYY8u7niE/kd4M+YuVIuoImY2U1Huo1bQgsqIiHuyKobRLCFv/56W+rAD1d9wR2BNW1mjejwSLzKRVbr8HYnLpkqSJYom8UoZ4zkbuUz6wPvauCm/hKTLKYkCmWxt8LZjC7Y25JHAQflZFmhBI5jjcNQ4150yPobR+PmnJxrOmKDiAbLZVz5R+TfBF7cTO+KQbjDi4Ce1tzJM8u/ZTSMS6ESQN9FYMZUnhAqNS1STRex06l91Y+Tu496C/wC2CGWf1Ymqet6rmX8i0HnR/VEPa6ICTbsNfrbOGba98YVpnzJmGI4KFFiMc9DFwtkDR2th4+IdgBzW/FDGQFbzNll9jJR9bG2KfZpeUQiRC4BEgJxck4neXyEB5CdpR6X1Ej8jfyfynQrwrW4SPrgTwx+jMEiiG/8zhGigNqAWLyn0CUawlB4OHo8lLsiHCpq5WxWQkc42yPQD926FPFGxXxujVuWq2ps= wangqiang@fanxiapp.com
    homestead:
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
    homestead: Invalid feature: mysql
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
    homestead: Ignoring feature: mariadb because it is set to false
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
    homestead: Ignoring feature: postgresql because it is set to false
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
    homestead: Ignoring feature: ohmyzsh because it is set to false
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
    homestead: Ignoring feature: webdriver because it is set to false
==> homestead: Running provisioner: shell...
    homestead: Running: C:/Users/Lenovo/AppData/Local/Temp/vagrant-shell20220829-23008-14upnya.sh
==> homestead: Running provisioner: shell...
    homestead: Running: C:/Users/Lenovo/AppData/Local/Temp/vagrant-shell20220829-23008-1iuztyd.sh
==> homestead: Running provisioner: Creating Certificate: laravel-8-shop-homestead.test (shell)...
    homestead: Running: script: Creating Certificate: laravel-8-shop-homestead.test
    homestead: Updating certificates in /etc/ssl/certs...
    homestead: rehash: warning: skipping duplicate certificate in ca.homestead.homestead.pem
    homestead: 1 added, 0 removed; done.
    homestead: Running hooks in /etc/ca-certificates/update.d...
    homestead:
    homestead: Adding debian:ca.homestead.homestead.pem
    homestead: done.
    homestead: done.
==> homestead: Running provisioner: Creating Site: laravel-8-shop-homestead.test (shell)...
    homestead: Running: script: Creating Site: laravel-8-shop-homestead.test
==> homestead: Running provisioner: shell...
    homestead: Running: inline script
==> homestead: Running provisioner: shell...
    homestead: Running: C:/Users/Lenovo/AppData/Local/Temp/vagrant-shell20220829-23008-540zib.sh
==> homestead: Running provisioner: Checking for old Schedule (shell)...
    homestead: Running: script: Checking for old Schedule
==> homestead: Running provisioner: Clear Variables (shell)...
    homestead: Running: script: Clear Variables
==> homestead: Running provisioner: Restarting Cron (shell)...
    homestead: Running: script: Restarting Cron
==> homestead: Running provisioner: Restart Webserver (shell)...
    homestead: Running: script: Restart Webserver
==> homestead: Running provisioner: Creating MySQL / MariaDB Database: laravel-8-shop-homestead (shell)...
    homestead: Running: script: Creating MySQL / MariaDB Database: laravel-8-shop-homestead
    homestead: We didn't find a PID for mariadb, skipping $DB creation
==> homestead: Running provisioner: shell...
    homestead: Running: C:/Users/Lenovo/AppData/Local/Temp/vagrant-shell20220829-23008-1q1lw98.sh
==> homestead: Running provisioner: Update motd (shell)...
    homestead: Running: script: Update motd
==> homestead: Running provisioner: shell...
    homestead: Running: C:/Users/Lenovo/AppData/Local/Temp/vagrant-shell20220829-23008-1006a48.sh

7、查看当前的 PHP 版本,默认为 8.0,那么 composer 执行使用仍然会使用 8.0,下载 composer.phar。参考:https://getcomposer.org/download/ 。进入项目根目录,复制命令粘贴后回车。如图3

图3

vagrant@homestead:~/Code/laravel-8-shop$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ed'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
vagrant@homestead:~/Code/laravel-8-shop$ php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
vagrant@homestead:~/Code/laravel-8-shop$ php composer-setup.php
All settings correct for using Composer
Downloading...

Composer (version 2.4.1) successfully installed to: /home/vagrant/Code/laravel-8-shop/composer.phar
Use it: php composer.phar

vagrant@homestead:~/Code/laravel-8-shop$ php -r "unlink('composer-setup.php');"
vagrant@homestead:~/Code/laravel-8-shop$ ls
app            composer.lock  package-lock.json  routes      webpack.mix.js
artisan        composer.phar  phpunit.xml        server.php  yarn.lock
auth.json      config         public             storage
bootstrap      database       README.md          tests
composer.json  package.json   resources          vendor
vagrant@homestead:~/Code/laravel-8-shop$ ls -l
total 3762
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 app
-rwxrwxrwx 1 vagrant vagrant    1739 Aug 29 02:30 artisan
-rwxrwxrwx 1 vagrant vagrant     124 Aug 29 02:30 auth.json
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 bootstrap
-rwxrwxrwx 1 vagrant vagrant    2280 Aug 29 02:30 composer.json
-rwxrwxrwx 1 vagrant vagrant  392484 Aug 29 02:30 composer.lock
-rwxrwxrwx 1 vagrant vagrant 2799637 Aug 29 07:21 composer.phar
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 config
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 database
-rwxrwxrwx 1 vagrant vagrant     943 Aug 29 02:30 package.json
-rwxrwxrwx 1 vagrant vagrant  358262 Aug 29 02:30 package-lock.json
-rwxrwxrwx 1 vagrant vagrant    1233 Aug 29 02:30 phpunit.xml
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 public
-rwxrwxrwx 1 vagrant vagrant    4022 Aug 29 02:30 README.md
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 resources
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 routes
-rwxrwxrwx 1 vagrant vagrant     590 Aug 29 02:30 server.php
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 storage
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 tests
drwxrwxrwx 1 vagrant vagrant    8192 Aug 29 02:30 vendor
-rwxrwxrwx 1 vagrant vagrant     581 Aug 29 02:30 webpack.mix.js
-rwxrwxrwx 1 vagrant vagrant  271440 Aug 29 02:30 yarn.lock
vagrant@homestead:~/Code/laravel-8-shop$

8、执行:php7.4 composer.phar update,不再报错。如图4

图4

vagrant@homestead:~/Code/laravel-8-shop$ php7.4 composer.phar update
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Package moontoast/math is abandoned, you should avoid using it. Use brick/math instead.
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/nova
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
Discovered Package: laravel/tinker
Discovered Package: laravel/ui
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: overtrue/laravel-lang
Discovered Package: srmklive/paypal
Package manifest generated successfully.
86 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
No publishable resources for tag [laravel-assets].
Publishing complete.
No security vulnerability advisories found
vagrant@homestead:~/Code/laravel-8-shop$

9、未自动生成 .env 文件,手动复制 php artisan 相关的命令,手动执行。

vagrant@homestead:~/Code/laravel-8-shop$ php7.4 -r "file_exists('.env') || copy('.env.example', '.env');"
vagrant@homestead:~/Code/laravel-8-shop$ ls -la
total 3763
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 07:57 .
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:29 ..
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 app
-rwxrwxrwx 1 vagrant vagrant    1739 Aug 29 02:30 artisan
-rwxrwxrwx 1 vagrant vagrant     124 Aug 29 02:30 auth.json
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 bootstrap
-rwxrwxrwx 1 vagrant vagrant    2202 Aug 29 07:51 composer.json
-rwxrwxrwx 1 vagrant vagrant  382659 Aug 29 07:27 composer.lock
-rwxrwxrwx 1 vagrant vagrant 2799637 Aug 29 07:21 composer.phar
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 config
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 database
-rwxrwxrwx 1 vagrant vagrant     276 Aug 29 02:30 .editorconfig
-rwxrwxrwx 1 vagrant vagrant    3381 Aug 29 07:57 .env
-rwxrwxrwx 1 vagrant vagrant    3381 Aug 29 02:30 .env.example
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 05:37 .git
-rwxrwxrwx 1 vagrant vagrant     162 Aug 29 02:30 .gitattributes
-rwxrwxrwx 1 vagrant vagrant     213 Aug 29 02:30 .gitignore
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 07:56 .idea
-rwxrwxrwx 1 vagrant vagrant     943 Aug 29 02:30 package.json
-rwxrwxrwx 1 vagrant vagrant  358262 Aug 29 02:30 package-lock.json
-rwxrwxrwx 1 vagrant vagrant    1233 Aug 29 02:30 phpunit.xml
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 public
-rwxrwxrwx 1 vagrant vagrant    4022 Aug 29 02:30 README.md
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 resources
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 routes
-rwxrwxrwx 1 vagrant vagrant     590 Aug 29 02:30 server.php
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 storage
-rwxrwxrwx 1 vagrant vagrant     208 Aug 29 02:30 .styleci.yml
drwxrwxrwx 1 vagrant vagrant       0 Aug 29 02:30 tests
drwxrwxrwx 1 vagrant vagrant    8192 Aug 29 07:27 vendor
-rwxrwxrwx 1 vagrant vagrant     581 Aug 29 02:30 webpack.mix.js
-rwxrwxrwx 1 vagrant vagrant  271440 Aug 29 02:30 yarn.lock
vagrant@homestead:~/Code/laravel-8-shop$

10、访问首页,报错,查看 Context,PHP version 为 7.4.14。符合预期。如图5

图5

永夜