24

開発用に 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 を指すようにしました。しかし、何も機能していないようです。

phpbrew の PHP バージョンを使用するように Apache に指示するにはどうすればよいですか?

4

5 に答える 5

38

以下を使用して PHP をビルドする必要がありますapxs2

1)がインストールされていることを確認しますsudo apt-get install apache2-dev

2)実行するphpbrew install 5.4.22 +apxs2=/usr/bin/apxs2

次に、ビルドされたモジュール ファイルが Apache 構成ファイルに表示されます。

于 2013-12-20T14:53:43.363 に答える
26

それは私を悩ませたので、私はこれをスクリプト化しました。

デフォルトでphpbrew switchは、CLI バージョンが変更されます。Apache を更新するには、新しく生成された.soファイルを使用するように指示する必要があります。Ubuntu では、このファイルは のように作成されます/usr/lib/apache2/modules/libphp$VERSION.so

この.soファイルを生成するには、次のように PHP をインストールする必要があります。

phpbrew install php-5.6.16 +default +apxs2

とにかく、PHP のバージョンを切り替えるために使用するシェル スクリプトは次のとおりです。.soファイルが見つからない場合、スイッチは失敗し、sudoApache を再起動する権限を要求します。

/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

.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
于 2016-01-08T21:06:48.510 に答える
4

Server Fault の投稿を調べてくださいHow do I tell Apache which PHP to use? .

Apache で PHP のバージョンを指定する必要があります。

于 2013-12-16T05:32:58.643 に答える