宅基地中每个站点的单独 php 版本不起作用

Posted

技术标签:

【中文标题】宅基地中每个站点的单独 php 版本不起作用【英文标题】:Individual php versions for each site in homestead not working 【发布时间】:2020-06-02 10:44:48 【问题描述】:

在生产中,我有两台服务器运行 php7.1 和 php7.3。 除了 php 版本,环境是一样的。

我正在尝试在宅基地中为每个站点使用不同的 php 版本重新创建它,但所有站点最终都使用 php 7.4,因为它是宅基地框的当前版本。

换句话说,网站版本控制无效:

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

有人知道我做错了什么吗? 有没有更好的方法来做到这一点?喜欢拥有多个盒子吗?

我正在使用 Vagrant 2.2.6 和 Homestead 9.2.0

【问题讨论】:

添加php: "7.3" 等应该可以,你如何检查php版本? 在每个站点上使用 phpinfo()。以及在 php>7.1 上运行时遇到弃用异常的自行车站点 您在添加php版本后是否配置了机器?例如vagrant reload --provisionvagrant halt, vagrant up --provision 是的,试了好几次 你有什么理由运行这么旧的宅基地版本? 【参考方案1】:

您需要将“php:”标签移动到网站部分。而且,您必须为每个站点指定“type:”标签。

修复代码并运行 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

【讨论】:

【参考方案2】:

我也有这个问题。 Phpmyadmin 需要 php 8.0,而我有 php 8.1。 运行sudo service --status-all | gpep php后,似乎只启动了一个php-fpm服务。

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

sudo service php8.0-fpm start phpmyadmin 工作正常之后。但是,重新启动后服务没有启动。所以我设置了 Homestead.yaml 来启动所需的服务。

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"

vagrant reload --provision 之后,php8.1-fpm 和 php8.0-fpm 都启动了。

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

【讨论】:

以上是关于宅基地中每个站点的单独 php 版本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter &get_instance() 在 php5.6 版本中不起作用?

PHP 会话在服务器的某些站点中不起作用

为啥 pull-right 类在 bootstrap 版本 4.1.0 上不起作用? [复制]

在 nGinx 中检查 GeoIP 不起作用

PHP - 标头/配置“允许来源”不起作用

AngularJS、SweetAlert.js 在自定义指令中不起作用