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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

7361閲覧

CentOS6.6で複数のPHPのバージョンを共存させたい

x_kai

総合スコア58

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

3クリップ

投稿2017/02/08 05:30

編集2017/02/10 02:53

###前提・実現したいこと
前に他の人が使用していたサーバーに、過去にyumで入れたPHP5.4.32を残したまま、
最新のPHPをインストールしたいと思っています。
そこで、ネットで調べて以下の2つの方法を実行してみました。

  1. phpenv + php-buildを使用する方法
  2. Remiリポジトリを使用してyumからインストールする方法

しかし、どちらの方法も上手く行きませんでした。
この2つの方法で発生した問題の解決策、またはこれら以外の別の方法をご教示いただけないでしょうか。

###発生している問題・エラーメッセージ
phpenv + php-buildを使用する方法
参考にしたサイト:http://www.aiship.jp/knowhow/archives/25452

この方法を試したところ、phpenv及びphp-buildの導入には成功したのですが、
いざPHPをインストールしようとすると以下のビルドエラーが発生します

[Info]: Loaded extension plugin [Info]: Loaded apc Plugin. [Info]: Loaded composer Plugin. [Info]: Loaded github Plugin. [Info]: Loaded uprofiler Plugin. [Info]: Loaded xdebug Plugin. [Info]: Loaded xhprof Plugin. [Info]: Loaded zendopcache Plugin. [Info]: php.ini-production gets used as php.ini [Info]: Building 7.1.1 into /root/.phpenv/versions/7.1.1 [Downloading]: https://secure.php.net/distributions/php-7.1.1.tar.bz2 ----------------- | BUILD ERROR | ----------------- Here are the last 10 lines from the log: ----------------------------------------- curl: (7) Failed to connect to 2a02:cb41::7: ネットワークに届きません ----------------------------------------- The full Log is available at '/tmp/php-build.7.1.1.20170208100829.log'. [Warn]: Aborting build.

Remiリポジトリを使用してyumからインストールする方法
参考にしたサイト:http://qiita.com/bezeklik/items/860ba080bf4c664cd8e9

こちらは、最新のPHP(PHP71)のインストールは上手くいって、
「php -v」で最新バージョン(PHP7.1.1)になっていることを確認したのですが、
/var/www/html/phpinfo.phpを作成して、ブラウザで表示してみると、
元々入っていたバージョン(PHP5.4.32)が表示されます。

###試したこと
phpenv + php-buildを使用する方法

curlのプロキシの設定の問題と考え、以下のように、curlrcを作成し、プロキシの設定をしました。
しかし、エラーの内容は変わりませんでした。

vi ~/.curlrc proxy = "http://プロキシサーバーのIPアドレス:ポート番号"

Remiリポジトリを使用してyumからインストールする方法

ネットで調べて、libphp7.so、libphp7-zts.soがないとダメなことが分かったのですが、
/usr/lib64/httpd/modules/の中にlibphp7.so、libphp7-zts.soが生成されておらず、
findで探してみましたがどこにも存在していませんでした。
PHP71を一度消して再インストールしてみましたが生成されませんでした。

###補足情報
作業の方ですが、Tera Termを使用して作業を行っています。

OSとApacheのバージョン

  • OS…CentOS6.6
  • Apache…Apache2.2.15

###追記(2017/02/09)
調べていると、ソースからインストールからでも共存できる?とのことでしたので、
wgetでソースからインストールしてみました。
以下のサイトを参考にしました。
CentOS6にPHP7をソースからインストール

上記ページの「必要なパッケージをインストール」から「PHPをインストール」までを行いました。
(今のところphp.iniは変わっていません。5.4.32のときのままです。)

結果として、「php -v」コマンドで表示されるバージョン、
及びphpinfo.phpでブラウザに表示されるバージョンともに「7.1.1」になりました。
ただ、元々入っていたPHP5.4.32が残っているのかが分かりません。
元々のPHPが残っているのかどうか、何か確認する術などはあるのでしょうか。
(※上記の質問を、別の質問として新しく投稿した方がいい場合はそのようにいたします。)

ちなみに、httpd.conf内を、以下のように「libphp5.so」を読むように書き換えてみましたところ、

LoadModule php5_module modules/libphp5.so # LoadModule php7_module /usr/lib64/httpd/modules/libphp7.so

「php -v」では「7.1.1」と表示されますが、phpinfo.phpでは「5.4.32」と表示されました。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

どの方法にせよ共通の問題として、同一のApacheインスタンスでは異なるバージョンのPHPを共存させることはできないので、IPアドレスかポート番号を変えて複数のApacheインスタンスを起動する必要があります。以下に、参考となる過去の質問を参照します。

PHP - VPS IPアドレスごとでPHP別バージョン(60683)|teratail

あるいは、2番目以降のPHPをCGIモードで動かすようにすれば、ディレクトリ単位で異なるPHPを動かすことができます。

投稿2017/02/08 13:56

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_kai

2017/02/09 01:22

回答ありがとうございます。 リンク先を見てみましたが、別々のバージョンのPHPを同時に扱うのではなく、 旧バージョンを残しておきつつ、新バージョンを使用したいと思っています。 それでも複数のApacheインスタンスを起動する方法しかないでしょうか?
ockeghem

2017/02/09 05:12

同時に動かすのでなければ、Apacheインスタンスは一つで大丈夫です
x_kai

2017/02/09 08:22

ありがとうございます。 質問に追記いたしましたので、こちらの方にも回答いただけたら幸いです。
guest

0

自己解決

追記後に調べてみましたが、どうやらphpinfo.phpで表示されていれば大丈夫のようですね。
php.iniが5.4.32の時から変わっていないのに動いていることが、自分の中の不安要素でしたが、
そもそも7.1.1側ではphp.iniを読んでいなかったので、あまり関係ありませんでした。
(ちなみに、今は新しいphp.iniを、既存のphp.iniとは別の場所に置いて、7.1.1で読ませています。)

ですので、追記した方法で、目的の状態になりました。
質問にお答えいただきありがとうございました。
また何かありましたらよろしくお願いします。

投稿2017/02/10 05:46

x_kai

総合スコア58

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ockeghem

2017/02/10 07:38

phpinfo() の表示が5.4.32であれば、それはPHP 5.4.32が動いてることになると思いますが、そういう話ではない?
x_kai

2017/02/10 07:42

LoadModuleを切り替えることで、使用するPHPのバージョンがちゃんと変わっているのか気になっていたので、 そういう話で合っています。 コメントありがとうございます。
guest

0

見る限り別のPCで環境を構築して、公開ディレクトリだけ
共通化すればいいような気がしますが
あえて古い環境を残すもしくはあえて新しい環境を導入する
必要性があるのでしょうか?

投稿2017/02/10 04:20

yambejp

総合スコア114833

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問