直ちに免責事項:CLスイッチのみを使用できますが、CLのみです。
この記事では、CLがないサーバーでユーザーがPHPのバージョンを選択できるようにする方法について説明します。
PHPのpiモードのバージョンをfastCGIに切り替えることについてです。
PHPの新しいバージョンの迅速なリリースに関連して、タスクはユーザーがアカウントに適切なバージョンのPHPを選択できるようにすることでした。
いつものように、OSのセットがあります:FreeBSD、Centos。 ただし、わずかな変更を加えたモジュールは、すべてのOSおよびCLでも機能します。
開始するには、サーバーに必要なバージョンのPHPを配置し、必要なすべてのPHP拡張機能をインストールします。
FreeBSDの場合
php5.2がインストールされているサーバーがある場合
ポートの更新
cd /usr/ports/lang/ php53 make PREFIX=/usr/local/php53 PHPBASE =/usr/local/php53 install
PREFIX-PHPをビルドする場所を明示的に規定します。
PHPBASE-PHPのベースディレクトリを指定します。
PHPをインストールしたら、拡張機能をインストールする必要があります。
cd /usr/ports/lang/php53-extensions make PREFIX=/usr/local/php53 PHPBASE=/usr/local/php53 install
拡張機能のビルド中に、システムにいくつかの依存関係がない場合、標準ディレクトリにはインストールされませんが、/ usr / local / php53にはすべて同じです。そのようなアプリケーションに気付いた場合は、それらを破棄して通常の方法でインストールする必要があります。
実際、各拡張機能を個別に配置することをお勧めします。確かに長くて不愉快ですが、更新の方が簡単です。
ポートをインストールすると、原則として、すべての準備が整いました! すべてが正常に機能するかどうかを確認するために、以下を行います
/usr/local/php5.3/bin/php-cgi -v
PHPバージョンを表示します
/usr/local/php 5.3/bin/php-cgi -m
エラーがなければ、インストールされているすべての拡張機能が表示され、すべてが正常になりました。
その後、必要なバージョンのPHPを必要なフォルダーに入れます
perlのモジュール。
モジュール自体は
cd /usr/local/ispmgr/addon
test.plと呼びましょう
touch test.pl chmod +x test.pl chmod 700 test.pl
モジュールに関して-あなたはより多くのことをより正確に書くことができますが、それは働くためであり、美のためではありませんでした。
モジュールを使用するには、独自の変数を設定する必要があります(サーバーの内容と場所)。
追加することがあります:
そして、それに応じて、バージョンの処理:
elsif ($usercurrentphpwrapper eq $v56) { $usercurrentphpver = "5.6";
そして
elsif ($newphpver == 5.6) { system ("chflags noschg $defhomedir/php-bin/$user/php"); system ("echo '#!/usr/local/php/56/bin/php-cgi' > $defhomedir/php-bin/$user/php"); system ("chflags schg $defhomedir/php-bin/$user/php"); system ("pkill -9 -u $user"); $newphpver1 = 5600;
モジュールコード自体:
次に、ユーザーがバージョンを切り替える機能を追加する必要があります(アカウント設定にアイテムを追加します)。
フォルダーへ
cd /usr/local/ispmgr/etc
ispmgr_mod_phpver.xmlファイルを作成します
touch ispmgr_mod_phpver.xml chmod 700 ispmgr_mod_phpver.xml
その中で、バージョンスイッチングのドロップダウンメニューをISPmanagerの[設定]メニューにドロップしています。
<?xml version="1.0" encoding="UTF-8"?> <mgrdata> <handler name="test.pl" type="cgi"> <event after="yes">usrparam</event> </handler> <metadata name="usrparam"> <form> <field name="phpver"> <select name="phpver"/> </field> </form> </metadata> <lang name="en"> <messages name="usrparam"> <msg name="5.3">5.3</msg> <msg name="5.2">5.2</msg> <msg name="5.1">5.1</msg> <msg name="4.4">4.4</msg> </messages> </lang> <lang name="ru"> <messages name="usrparam"> <msg name="phpver"> PHP </msg> <msg name="hint_phpver"> PHP.</msg> </messages> </lang> </mgrdata>
また、/ usr / local / ispmgr / etcにファイルを作成します
touch phpver.list
使用するバージョンのリストが含まれ、サーバーにインストールされます
5.2 5.3 5.4 5.5
キャリッジ変換を配置することを忘れないでください(5.5の下の空行に注意してください)。
ファイルを作成します:
cd /usr/local/ispmgr/var/
Phpver.changeファイル:
touch phpver.change chmod 700 phpver.change
バージョンのユーザーによる変更のログはここにあります。
ISPmanagerのxmlキャッシュを消去します
rm -rf /usr/local/ispmgr/var/.xmlcache
ISPmanagerパネルを再起動します。
killall ispmgr
テストユーザーの確認
<? phpinfo(); ?>
ISPmanagerにアクセスして使用します。 また、新しい「バン」の入手可能性に関するニュースレターをユーザーに送信することを忘れないでください。

何か説明するのを忘れた場合は、追加します。
スクリプト内のFreeBSDフラグについて
system( "chflags noschg $ defhomedir / php-bin / $ user / php");
system( "echo '#!/ usr / local / php / 52 / bin / php-cgi'> $ defhomedir / php-bin / $ user / php");
system( "chflags schg $ defhomedir / php-bin / $ user / php");
古いバージョンでは、ISPmanagerはホームディレクトリのユーザーにラッパーを書き込みました。 その結果、ユーザーがすべてを削除した場合、ラッパーはもうないため、再起動時にapacheがダウンしたため、不変性フラグを設定しました。
Centosの場合 、
chflags noschgを
chattr -iに置き換え、それに応じて
chflags schgを
chattr + iに置き換えます。
CLの場合、代わりにalt-phpが使用される場合:
system ("echo '#!/usr/local/php/52/bin/php-cgi' > $defhomedir/php-bin/$user/php");
以下を指定する必要があります。
system ("cl-selector -s php -v $newphpver -u $user");