質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.07%

既存PHPを残して別バージョンのPHPを並行インストールは可能なのか

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 3,342

FuelPHP総合1位

目的

サーバー管理会社のカスタマーサポートに連絡してPHPのバージョンを上げたいと伝えたところ、サポート外なので答えられませんとの回答を得ました。

既存PHP環境を変えずに試しに別バージョンのPHPを動かしてみたい場合、どうしたらいいんでしょうか。
このパスだけはこっちのPHPを使う、っていうのが理想ですが。
(さくらのレンタルサーバーみたいにまるっとバージョン切り替えできて元に戻せるのも良いですね。)

現状

現在使用しているレンタルサーバーは、VPSで、

  • CentOS release 4.9 (Final)
  • Apache/2.0.64
  • PHP 5.3.15 with Suhosin-Patch (cli)

となっております。

サーバー管理会社提供のユーザーマニュアルにはPHPの入れ替えに言及しているコンテンツはありませんでした。

試したこと

$ yum list php
Setting up repositories
Reading repository metadata in from local files
Available Packages
php.i386                                 4.3.9-3.15             rhn


yum check-update しても、phpは出現しませんでした。 リポジトリが古い状態で固定されてしまっているからでしょうか。

root権限があるので、手順さえ分かれば何かしら出来そうなのですが。

システム稼働中のサーバーで危険を冒せないということもあり、別のサーバーを借り直すのが正しそうな気もします。
(稼働中php&postgresqlシステムの互換性を確認しないといけなくなりますが。)
システム管理面は素人に近いので、害が及ぶ危険性があるなら止めます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • masaya_ohashi

    2016/06/23 12:21 編集

    そのレンタルサーバは共有サーバですか?それとも物理的に1台のサーバですか?それともVPSのように仮想マシンのうちの1台ですか?質問文にわかる範囲で追記しておくとアドバイスの内容が変わるかと思います。

    キャンセル

  • m6u

    2016/06/23 12:23

    VPSサービスです。質問中に加筆しました。

    キャンセル

回答 5

+8

直接的な回答ではありませんが。。。

  • CentOS release 4.9 (Final)

この時点で、現行サーバの継続利用を前提とするのはやめた方がいいかと思います。
http://qiita.com/yunano/items/4757f86f9e92bb4f503f こちらがわかりやすいですが、CentOS4はすでにサポートが切れてだいぶたっています。
その間に発見された各種の脆弱性などへの対応はなされていない状態になります。

システム稼働中のサーバーで危険を冒せないということもあり、別のサーバーを借り直すのが正しそうな気もします。 
(稼働中php&postgresqlシステムの互換性を確認しないといけなくなりますが。) 

とのことなので、OSのバージョンアップを兼ねて新規サーバへの移設をお勧めします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 12:30

    一般向けのwebサイトではなく、業務で使うプライベートwebシステムですが、新規サーバー移設が妥当なんでしょうか。以前サーバー移行したときミスしたことがありなかなか気が進まなかったのですが。

    キャンセル

  • 2016/06/23 13:33

    公開されているか非公開かは、現在の攻撃手法を踏まえるとほとんど比較の意味はありません。
    その非公開なWebサイト「も」閲覧するPCが一般の外部公開されているサイトも閲覧するのであればそのPCが攻撃の主体になるわけですから、非公開なWebサーバへのアクセス経路があることになります。

    家庭用ルータが標的となってこういった攻撃も頻発しています。 http://blog.trendmicro.co.jp/archives/11200

    これは、「内部からしか閲覧できない」ことが防御に役立つものではないことを示しています。

    キャンセル

checkベストアンサー

+3

安全性を重視されるのであれば質問中にあるように別のサーバを借りて、十分な動作確認をした上で移行計画を立てるという方法がベストかと思います。
この方法のいいところは、途中で問題があっても本番には一切影響が出ないところで、安全性では本番サーバでどうにかするという方法とは比較になりません。
また、立ち上げについて外注するという選択肢が比較的簡単かつ安価な選択肢となるというメリットもあります。
*一般に既存サーバのアップデートは工数が大きくかかります。

OSのアップデートの必要性について
プライベートなwebというのが、
接続元のネットワークと端末が全て信頼できる(社内の管理されたネットワークからのみアクセス出来る。アクセスする端末はインターネットには接続できない) という状態であればOSを変更する必要性は比較的低くなります。(とはいえ、アップデートしなくていいというところまでは低くならないと思います)
サーバとはインターネットVPNで接続され、社内LANからはインターネットの他サイトには出れないようなガチガチの構成の場合ですね。

逆に、例えばBasic認証やアプリケーションによる認証のみで認証されていて、インターネットから広く接続されているのであったり個人持ち込みの端末でアクセスできるような状態なのであれば、今すぐ乗っ取られたり、通信を盗聴/改ざんされてもおかしくない様な状態になっているということを認識する必要があります。(各脆弱性に対して個別に対応していれば別です)
特にここ1年で発見されてOpenSSL関連の脆弱性はかなり危険なものが多くあります。

既存サーバで何とかする場合

PHPの別バージョン稼働についてぱっと思いつく比較的安全な方法としては、以下の様な感じでしょうか。

別プロセスでもう一つapache+PHP環境を作る
1.適当なリバースプロキシを立てる
2.現在動いているapache+phpはそのままにして、LISTENポートを変えてリバースプロキシ経由で通信するようにする
3.ソースからビルドしたり標準以外のリポジトリから別バージョンのphpをインストールする
4.apacheのconfコピーしのphpモジュール読み込み部分とLISTENポート部分を変更して別プロセスで起動する
5.リバースプロキシの機能で動かしたいPHPのバージョンごとにそれぞれのapacheに振り分ける

phpenv等を使って切り替える
参考URL
のような形でphpを切り替えられる構成にする。
*CentOS4で使用できるかは調べていませんので使えないかもしれません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 16:18

    総合的な見地での回答ありがとうございます、助かります。他の方の回答にもありました、別立てでApache+PHPとする方法が現実感がありますね。

    キャンセル

  • 2016/06/23 16:24

    そうですね。
    リバースプロキシ云々はおいておいて、初期テストのタイミングでは単純に別ポートで立ち上げてしまい、テストもポート指定しながら行えば本番への影響は殆ど無しにすることは出来そうです。
    出来ればpostgresqlも別で立ち上げてしまうのがより安心ですね。(メモリ等が許せば)

    キャンセル

+1

目的に合うかわかりませんが…。CHH/phpenvというのがあります。
これはrbenvのラッパーで、rbenvと同じ仕組みを使ってPHPのバージョンを切り替えることができます。

ただし、そのまま使うだけだとphpコマンドが切り替わるだけで、Apacheとの連携部分、つまりlibphp5.soのようなモジュールは作成されませんし、切り替わりません。

そこで切り替えのためにはapache-versionが利用できます(モジュール作成はしてくれません。)

とざっくり書きましたが、正直これを動かすのは結構難しいです。gccや他依存するライブラリの適切なバージョンのものが必要です。yumでは入らないものもあります。ビルドオプションをちょこっといじったりも必要です。さらに中身はrbenvなのでRubyも必要です。

私はCentOS6.7+Apache2.2の環境ではなんとかうまくいきましたが、CentOS4+Apache2.0では依存ライブラリの問題がもっとたくさんでると思うので、非常に困難だと思います。

ちなみに同じ名前のphpenv/phpenvというのもありますが、こちらはツールやライブラリの問題が解決できず私はCentOSで動かすことを諦めました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 16:15

    こちらの仕組みは存じ上げませんでした。難易度高そうですね。

    キャンセル

+1

実際には試していなのでなんとも言えませんが
prefixを分けて処理すればインストールはできそうな気がします。
ただしモジュールで組み込むとhttpd側で切り分けができないと思うので

・httpdも二重化する
・モジュールはあきらめてCGIで実行する

のどちらかであれば行けそうな気もします。
いずれにしても特殊な運用方法なので、自己責任でのテストになるでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 16:17

    Apacheに組み込まれているでしょうから、別立てでApache+PHPとするなら可能かもしれませんね。ありがとうございます。

    キャンセル

0

PHPをソースからインストールする方法で可能かと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 16:16

    ソースからビルドする際、なにか気をつけるポイントなどありますか?

    キャンセル

  • 2016/06/23 16:18

    使用するオプションなどが間違いなくはいっていることと、ヴァージョンがあっているかが気をつけるポイントだと思います。また、パスを通す場合既に入れているPHPとバッティングしないこと かと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.07%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る