Debian StretchへのPHP 5.3のインストール (9)

Debian StretchへのPHP 5.3のインストール (9)

私は非常に古いサーバー(Debian etch)をDebian Stretchに移行しようとしていますが、私が開発したすべてのアプリケーションには予想されるPHPの問題があります。一部は修正でき、一部は修正できません(例:複数のドラパル6サイト)。将来的には、すべての個々のアプリケーションがPHP7.0で提供される予定ですが、その日が来るまでこれを提供するにはPHP5.3が必要です。

私はDebian Stretchが共同インストール可能なPHPバージョンの一種の「デフォルト」サポートを持っていることを知っていますが、私が見つけた例はすべてPHP5.6(Jessieバージョン)です。 https://pehapkari.cz/blog/2017/03/27/multiple-php-versions-the-easy-way/

また、Debian Jessie、Wheezyなどでは連携して動作しますが、Debian Stretch(PHP7.0)では動作しないPHP5.3とPHP5.4またはPHP5.6のいくつかの例を見つけました。 https://superuser.com/questions/913792/php-5-3-10-on-debian-jessie

だからまず、PHP7.0とPHP5.3がapache2で連携できるかどうかを知りたいです。Debian ストレッチで。

第二に、これを行う方法を理解する必要があります。

私はシステム管理者ではないので、Debianの知識が最初から毎日増えています。

ありがとうございます。

ベストアンサー1

私は偶然に似た質問を見つけ、それを動作させました。

debian 9/nginx/php5.4を使用してサーバーをインストールする必要があるため、前提条件とまったく一致しませんが、解決策は似ていると仮定します。問題を解決するために取った手順をリストします。

デフォルトでは、opensslサポート(--with-openssl)が必要な場合は、ソースからPHPをインストールする必要があります。以前のバージョンのPHP(<7.0)はopenssl> = 1.1.0(debian 9)をサポートしていないため、問題が発生します。のデフォルト値です。したがって、古いopensslバージョンをビルドする必要があります(私は1.0.1uを使用しました)。

しかし、まずいくつかの依存関係をインストールしましょう。

apt install build-essential checkinstall zip autoconf
apt install libfcgi-dev libfcgi0ldbl libmcrypt-dev libssl-dev libc-client2007e-dev libkrb5-dev libcurl4-openssl-dev
apt install libxml2-dev libcurl4-openssl-dev libpcre3-dev libbz2-dev libjpeg-dev libpng-dev libfreetype6-dev libmcrypt-dev libmhash-dev freetds-dev libmariadbclient-dev-compat unixodbc-dev libxslt1-dev

それからopensslをビルドします。

cd /opt/
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
tar xzf openssl-1.0.1u.tar.gz
cd openssl-1.0.1u
./config shared --openssldir=/usr/local/openssl/ enable-ec_nistp_64_gcc_128
make depend
make
make install
ln -s /usr/local/openssl/lib /usr/local/openssl/lib/x86_64-linux-gnu

追加の効果で新しく構築されたopensslを使用してlibcurlとlibc-client(imapサポート用)を構築する必要があります。 libcurlから始めましょう。

cd /opt/
wget https://curl.haxx.se/download/curl-7.26.0.tar.gz
tar xzf curl-7.26.0.tar.gz
cd curl-7.26.0
env PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig LDFLAGS=-Wl,-rpath=/usr/local/openssl/lib ./configure --with-ssl=/usr/local/openssl --with-zlib --prefix=/usr/local/curl
make
make install

その後、libc-クライアント。実際には、いくつかのパッチを含むDebian 8ソースコードを使用しました。ビルド自体は失敗しますが、c-client.aは引き続き生成されます。これがまさに私が必要なものです。

cd /tmp/
wget http://http.debian.net/debian/pool/main/u/uw-imap/uw-imap_2007f\~dfsg-2.dsc
wget http://http.debian.net/debian/pool/main/u/uw-imap/uw-imap_2007f\~dfsg.orig.tar.gz
wget http://http.debian.net/debian/pool/main/u/uw-imap/uw-imap_2007f\~dfsg-2.debian.tar.gz
dpkg-source -x uw-imap_2007f\~dfsg-2.dsc imap-2007f
mv imap-2007f /usr/local/
cd /usr/local/imap-2007f/
touch {ipv6,lnxok}
make slx SSLINCLUDE=/usr/local/openssl/include/ SSLLIB=/usr/local/openssl/lib EXTRAAUTHENTICATORS=gss
mkdir lib include
cp c-client/*.c lib/
cp c-client/*.h include/
cp c-client/c-client.a lib/libc-client.a
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

これにより、PHP5.4を構築するために必要なすべてが揃っています。コンパイル時に(ローカルバージョンとシステムopensslバージョンが一致しないため)postgresqlバインディングに関する警告が表示されたため、使用するにはlibpqを直接ビルドする必要があるようです。

cd /opt/
PHP_VER=5.4.45
wget http://museum.php.net/php5/php-${PHP_VER}.tar.gz
tar xzf php-${PHP_VER}.tar.gz
cd php-${PHP_VER}
LDFLAGS="-Wl,-rpath=/usr/local/openssl/lib,-rpath=/usr/local/curl/lib" './configure'  --prefix=/usr/local/php-${PHP_VER} '--with-zlib-dir' '--with-freetype-dir' '--enable-fpm' '--enable-mbstring' '--with-libxml-dir=/usr' '--enable-soap' '--enable-calendar' '--with-curl=/usr/local/curl' '--with-mcrypt' '--with-zlib' '--with-gd' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-zlib' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-mbregex' '--with-mhash' '--enable-zip' '--with-pcre-regex' '--with-mysql' '--with-pdo-mysql' '--with-mysqli' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--enable-cgi' '--with-pear' '--enable-memcache' '--with-openssl=/usr/local/openssl' '--with-imap=/usr/local/imap-2007f' '--with-kerberos' '--with-imap-ssl' '--with-libdir=lib/x86_64-linux-gnu'
LDFLAGS="-Wl,-rpath=/usr/local/openssl/lib,-rpath=/usr/local/curl/lib" make
make install

残りの唯一のことは、php.iniとphp-fpm.confファイルを生成することです。これは簡単です。 php-fpmソケットを設定してinitscriptを作成します(オンラインには多くの例があるため、ここにファイル全体を公開することはできません)。 、Webサーバー構成(ソケットを介したfastcgi)。

おすすめ記事