首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >告诉Apache使用使用phpbrew安装的特定PHP版本

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

Stack Overflow用户
提问于 2013-12-14 13:55:33
回答 5查看 30.3K关注 0票数 24

我为开发安装了PHP、MySQL和Apache堆栈。该安装正在使用以下配置文件:

代码语言:javascript
复制
/etc/apache2/
/etc/php5/

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

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

代码语言:javascript
复制
$ 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版本?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-12-20 14:53:43

您需要用apxs2构建一个PHP

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

2) Run phpbrew install 5.4.22 +apxs2=/usr/bin/apxs2

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

票数 38
EN

Stack Overflow用户

发布于 2016-01-08 21:06:48

我写了这个剧本,因为它让我很烦。

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

要生成这个.so文件,您必须安装PHP如下:

代码语言:javascript
复制
phpbrew install php-5.6.16 +default +apxs2

无论如何,下面是我用来切换PHP版本的shell脚本。如果找不到.so文件,则开关将失败,并将请求sudo特权以重新启动Apache。

/home/luker/bin/phpbrewswitch

代码语言:javascript
复制
#!/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版本:

代码语言:javascript
复制
[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

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

代码语言:javascript
复制
[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
票数 26
EN

Stack Overflow用户

发布于 2013-12-16 05:32:58

请查看服务器故障后的https://serverfault.com/questions/428800

您需要在Apache中指定PHP版本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20584156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档