それは私を悩ませたので、私はこれをスクリプト化しました。
デフォルトで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
ファイルが見つからない場合、スイッチは失敗し、sudo
Apache を再起動する権限を要求します。
/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