web-dev-qa-db-ja.com

PHP 5.3.29をApache 2モジュールを備えたUbuntu 14上のソースからインストールする

PHP 5.3.29をApache 2とともにUbuntu 14に個別に正常にインストールしました。

私はPHPを次の方法でインストールしました:

Sudo -i
wget http://in1.php.net/distributions/php-5.3.29.tar.bz2
tar -xvf php-5.3.29.tar.bz2
cd php-5.3.29
./configure
make
make install

ただし、PHPとApacheにはリンケージがないようです。つまり、ApacheとPHPの両方をインストールしましたが、ApacheはPHPを実行しません。

私が試したこと:

このサイトから: https://docs.moodle.org/28/en/Compiling_PHP_from_source
「ApacheとPHPの構成」、これをApache構成ファイルに追加するように求められました。

LoadModule php5_module modules/libphp5.so

ただし、「libphp5.so」モジュールがありません。

一部の人々は私にこれを実行するように頼みました:

Sudo apt-get install libapache2-mod-php5

しかし、コマンドを実行すると、PHP 5.5.9がインストールされましたが、PHP 5.3.29。

Apacheを実行するにはどうすればよいですかPHP 5.3.29私がインストールしたものですか?

12
dondonhk

これは私にとってはうまくいきます:

Sudo -s

ソースをダウンロード

mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget -O php-5.3.29.tar.gz http://de1.php.net/get/php-5.3.29.tar.gz/from/this/mirror
tar -xzf php-5.3.29.tar.gz
cd php-5.3.29

必要な依存関係をすべてインストールします

apt-get install Apache2 php5 php5-common php5-cli php5-mysql php5-Gd php5-mcrypt php5-curl libapache2-mod-php5 php5-xmlrpc mysql-server mysql-client libapache2-mod-fastcgi

apt-get install build-essential php5-dev libbz2-dev libmysqlclient-dev libxpm-dev libmcrypt-dev libcurl4-gnutls-dev libxml2-dev libjpeg-dev libpng12-dev

PHPをコンパイルする

./configure --prefix=/usr/share/php53 --datadir=/usr/share/php53 --mandir=/usr/share/man --bindir=/usr/bin/php53 --includedir=/usr/include/php53 --sysconfdir=/etc/php53/Apache2 --with-config-file-path=/etc/php53/Apache2 --with-config-file-scan-dir=/etc/php53/conf.d --enable-bcmath --with-curl=shared,/usr --with-mcrypt=shared,/usr --enable-cli --with-Gd --with-mysql --with-mysqli --enable-libxml --enable-session --enable-xml --enable-simplexml --enable-filter --enable-inline-optimization --with-jpeg-dir --with-png-dir --with-zlib --with-bz2 --with-curl --enable-exif --enable-soap --with-pic --disable-rpath --disable-static --enable-shared --with-gnu-ld --enable-mbstring
make && make install

Apacheモジュールをアクティブ化

a2enmod cgi fastcgi actions
service Apache2 restart

対応する構成ファイルを作成する

vi /etc/Apache2/php53.conf

インサート:

#Include file for virtual hosts that need to run PHP 5.3


SetHandler application/x-httpd-php5

ScriptAlias /php53-cgi /usr/lib/cgi-bin/php53-cgi
Action application/x-httpd-php5 /php53-cgi
AddHandler application/x-httpd-php5 .php

追加のスクリプトを開始する環境スクリプトを作成しますPHP version

vi /usr/lib/cgi-bin/php53-cgi

インサート:

#!/bin/sh
PHPRC="/etc/php53/Apache2/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php53/php-cgi

Apache 2の仮想ホストを構成します

Include php53.conf
ServerName example.org
DocumentRoot /var/www/sites/example.org

Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted

最後に、再起動...

service Apache2 restart

ソース: https://erdfisch.de/en/multiple-versions-php-Apache-under-linux

11
wittich

ヴィッティヒの答えは素晴らしいです!私のUnixウェブサイトでphp 5.1をphp 5.6に置き換えるために使用しました。 Wittichとは異なり、私は2つのバージョンを同時に実行しようとしていませんでした。私は単に、Apacheと統合された古いバージョンのphpから、cgiから実行される新しいバージョンにアップグレードすることを試みていました。

何らかの理由で、Wittichのいくつかのコマンド(SetHandlerコマンドなど)が原因で、Apacheを試した後、Apacheをロードできませんでした。 Apacheが正しく動作するように、私は彼の答えを単純化する必要がありました。 Wittichの手順に6つの変更を加えました。

  1. Apt-getは自分のUnixシステムでは動作しないため、apt-getの代わりにyumを使用しました。

  2. 私はphp 5.3ではなくphp 5.6をインストールしていたので、configureコマンドのスイッチで「php53」のすべてのインスタンスを「php56」に変更しました。これはすべてが機能するために必要なわけではありませんが、以下の私のパスを理解するのに役立ちます。

  3. Httpd構成フォルダー(/etc/httpd/conf.d)の1つで、phpのcgi実装用にすでにセットアップされているファイル(php_cgi.conf)を見つけました。その内容は:

scriptAlias/phppath/"/ var/www/cgi-bin/cgi_wrapper /"
アクションphp-script/phppath/cgi_wrapper

このファイルの内容と存在により、Wittichのいくつかのステップをスキップまたは変更できます。 php53-cgiもphp53.confも作成していません。

  1. Php53-cgiを作成する代わりに、既存のファイル(/ var/www/cgi-bin/cgi-wrapper/cgi-wrapper)の内容をphp53-cgiに推奨される内容に置き換えました。他の行がApacheの適切な再起動を妨げているため、そのファイルの内容は最初と最後の行(番号記号の前のスラッシュなし)になりました。
\#!/ bin/sh
exec/usr/bin/php56/php-cgi
  1. Php53.confを作成する代わりに、php.confファイル(/etc/httpd/conf.d/php.conf)の単一のコマンドを置き換えました。 phpコマンドのadd-handlerを変更して、次のように変更しました。
AddHandler php-script .php
  1. 私の目標は単に古いphpを置き換えることであり、異なる仮想ホストで実行されるphpの異なるバージョンを作成することではなかったので、httpd.confファイルをまったく変更しませんでした。ただし、httpd.confファイルを変更してoldAddHandlerがnewAddHandlerが他のディレクトリに表示される一方で、一部のディレクトリに表示されます。

したがって、要約すると、ハイジャックしてガイドとして使用できる既存のphp_cgi.confファイルがある場合、Wittichの回答を古いApacheベースのphpバージョンから新しいcgiベースのバージョンにアップグレードする方法に簡単に変換できます。

David Brogdonによる投稿は、configure、make、およびmake installコマンドを初めて使用するユーザーにとってのWittichの回答を補完するものであることがわかりました。

http://www.onlamp.com/pub/a/php/2000/11/17/php_admin.html

私は何時間もインターネットを検索しましたが、Brogdonの投稿やWittichの答えほど役立つものは見つかりませんでした。 Wittichの答えは彼のUnixシステムで完璧に機能したに違いありませんが、私のシステムで動作させるために少し修正する必要がありました。

0
Howard Richman

これは私にとってスクラッチUbuntu 14.04で動作します:

手動インストール

システムパッケージを更新する

  1. apt-get update

  2. apt-get upgrade -y

依存関係をインストールして環境を準備する

  1. apt-get install -y build-essential libxml2-dev Apache2 Apache2-dev

  2. echo "export PATH=/usr/local/bin:/usr/local/sbin:$PATH" >> ~/.bashrc

  3. apt-get install -y libapache2-mod-php5 --no-install-recommends

ダウンロードPHP 5.3.29

  1. apt-get install -y wget && cd /tmp && wget http://php.net/distributions/php-5.3.29.tar.bz2

Apacheのモジュールapxs2を解凍して構成します。

  1. tar -xvf php-5.3.29.tar.bz2 && cd php-5.3.29 && ./configure --with-apxs2=/usr/bin/apxs2

インストールする

  1. make && make install

機能するかどうかを確認する

  1. service Apache2 restart && php -v

Docker経由

docker pull fabriciohp/php-5.3.29

0
Fabricio