告诉 Apache 使用使用 phpbrew 安装的特定 PHP 版本

2022-08-30 17:27:03

我安装了PHP,MySQL和Apache堆栈进行开发。该安装正在使用来自以下位置的配置文件:

/etc/apache2/
/etc/php5/

后来我用 安装了多个PHP版本。所有版本均可从 CLI 访问和切换。但是Apache始终保持在未使用phpbrew安装的默认版本上。phpbrew

以下是我安装的PHP版本列表。

$ phpbrew list
Installed versions:
  php-5.4.13       (/home/admin1/.phpbrew/php/php-5.4.13)
                   +default -- --with-bz2=/usr
  php-5.5.5        (/home/admin1/.phpbrew/php/php-5.5.5)

  php-5.3.27       (/home/admin1/.phpbrew/php/php-5.3.27)

我尝试更改配置文件路径,以便它们指向phpbrew的PHP。但似乎没有任何效果。

我怎样才能告诉Apache使用phpbrew的PHP版本?


答案 1

你需要用以下语言构建一个 PHP:apxs2

1)确保您已安装。sudo apt-get install apache2-dev

2) 运行phpbrew install 5.4.22 +apxs2=/usr/bin/apxs2

然后,您应该在Apache配置文件中看到构建的模块文件。


答案 2

我编写了这个脚本,因为它很烦人。

默认情况下,将更改 CLI 版本。要更新Apache,您必须告诉它使用新生成的文件。在 Ubuntu 上,此文件将像 .phpbrew switch.so/usr/lib/apache2/modules/libphp$VERSION.so

要生成此文件,您必须安装PHP,如下所示:.so

phpbrew install php-5.6.16 +default +apxs2

无论如何,这是我用来切换PHP版本的shell脚本。如果找不到该文件,则交换机将失败,并且它将请求重新启动 Apache 的权限。.sosudo

/home/luker/bin/phpbrewswitch

#!/usr/bin/env bash
VERSION=$1

SOFILE=/usr/lib/apache2/modules/libphp$VERSION.so
CONFFILE5=/etc/apache2/mods-available/php5.load
CONFFILE7=/etc/apache2/mods-available/php7.load

source ~/.phpbrew/bashrc

if [ -f $SOFILE ]; then
    phpbrew switch $VERSION
    phpbrew list

    if [[ $VERSION == 7* ]]; then
        FILECONTENTS="LoadModule php7_module $SOFILE"
        CONFFILE=$CONFFILE7
        sudo a2enmod php7
        sudo a2dismod php5
    else
        FILECONTENTS="LoadModule php5_module $SOFILE"
        CONFFILE=$CONFFILE5
        sudo a2enmod php5
        sudo a2dismod php7
    fi;

    echo $FILECONTENTS > $CONFFILE
    echo "AddType application/x-httpd-php .php" >> $CONFFILE
    echo "Updated $CONFFILE"
    sudo service apache2 restart

else
    echo $VERSION "is not configured for apache"
    phpbrew list
fi

用法

尝试切换到不是为 Apache 构建的 PHP 版本:

[21:02:55] luker [~]$ phpbrewswitch 5.4.45
5.4.45 is not configured for apache
  php-5.6.16
  php-5.6.10
* php-5.5.30
  php-5.4.45

成功更改为具有现有文件的 PHP 版本:.so

[21:03:55] luker [~]$ phpbrewswitch 5.6.16
* php-5.6.16
  php-5.6.10
  php-5.5.30
  php-5.4.45
Updated /etc/apache2/mods-available/php5.load

推荐