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

 圈圈 发布于 2023-02-10 14:17

我安装了PHP,MySQL和Apache堆栈用于开发.该安装使用以下配置文件:

/etc/apache2/
/etc/php5/

后来我安装了多个PHP版本phpbrew.所有版本均可从CLI访问和切换.但Apache总是保留在未使用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版本?

2 个回答
  • 您需要构建一个PHP apxs2:

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

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

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

    2023-02-10 14:20 回答
  • 我编写了这个脚本,因为它让我烦恼.

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

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

    phpbrew install php-5.6.16 +default +apxs2
    

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

    /家庭/卢克/斌/ 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
    

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

    [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
    

    2023-02-10 14:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有