'Individual php versions for each site in homestead not working

In production I have two servers running php7.1 and php7.3. Other than the php-version, the environments are the same.

I'm trying to recreate this in homestead using different php-version for each site, but all sites end up using php 7.4 as it is the current version of the homestead box.

In other words, the site versioning have no effect:

Homestead.yaml

ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox

authorize: .ssh/homestead_rsa.pub

keys:
    - .ssh/homestead_rsa

folders:
    - map: C:/www/api
      to: /home/vagrant/api
      php: "7.3"
    - map: C:/www/bikes
      to: /home/vagrant/bikes
      php: "7.1"
    - map: C:/www/manager
      to: /home/vagrant/manager
      php: "7.3"

sites:
    - map: api.test
      to: /home/vagrant/api/public
    - map: bikes.test
      to: /home/vagrant/bikes/public
    - map: manager.test
      to: /home/vagrant/manager/public

databases:
    - api
    - bikes
    - manager

Anyone got a clue what i'm doing wrong? Is there a bettwer way to do this? Like having multiple boxes?

I'm using Vagrant 2.2.6 and Homestead 9.2.0



Solution 1:[1]

I had this issue too. Phpmyadmin required php 8.0, and I had php 8.1. After running sudo service --status-all | grep php, it appeared that only one php-fpm service was up.

[ - ]  php5.6-fpm
[ - ]  php7.0-fpm
[ - ]  php7.1-fpm
[ - ]  php7.2-fpm
[ - ]  php7.3-fpm
[ - ]  php7.4-fpm
[ - ]  php8.0-fpm
[ + ]  php8.1-fpm

After running sudo service php8.0-fpm start phpmyadmin worked fine. However after reboot service didn't start. So I set up Homestead.yaml to start desired service.

sites:
- map: homestead.test
  to: /home/vagrant/projects/myproject/public
- map: phpmyadmin.test
  to: /home/vagrant/projects/phpmyadmin/
  php: "8.0"

databases:
- homestead

services:
- enabled:
      - "php8.0-fpm"

After vagrant reload --provision both php8.1-fpm and php8.0-fpm were up.

[ - ]  php5.6-fpm
[ - ]  php7.0-fpm
[ - ]  php7.1-fpm
[ - ]  php7.2-fpm
[ - ]  php7.3-fpm
[ - ]  php7.4-fpm
[ + ]  php8.0-fpm
[ + ]  php8.1-fpm

Solution 2:[2]

You needs to move "php:" tag to sites section. And more, you must specify "type:" tag for each site.

Fix the code and run vagrant reload --provision.

ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox

authorize: .ssh/homestead_rsa.pub

keys:
    - .ssh/homestead_rsa

folders:
    - map: C:/www/api
      to: /home/vagrant/api
      
    - map: C:/www/bikes
      to: /home/vagrant/bikes
      
    - map: C:/www/manager
      to: /home/vagrant/manager

sites:
    - map: api.test
      to: /home/vagrant/api/public
      type: "apache"
      php: "7.3"

    - map: bikes.test
      to: /home/vagrant/bikes/public
      type: "apache"
      php: "7.1"

    - map: manager.test
      to: /home/vagrant/manager/public
      type: "apache"
      php: "7.3"

databases:
    - api
    - bikes
    - manager

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 padawanTony
Solution 2 Jorge Miguel Sanchez