PHP5.2.4で動いているサーバーにcgi版PHP5.6.28をインストールした


環境

OS: Turbolinux Appliance Server 3.0
PHP:5.2.4
MySQL:5.0.45
Apache:2.2.6

経緯

このOSが曲者で、サーバー管理を管理画面から行えるようBlueQuartzを搭載しているのだけど、このせいでPHPがアップデートできない…。
しかもユーザーが少ないので情報もほとんどない。
かといって実稼働してるし、ホスティング事業もやっているので色々冒険はできない。。。

以前サポートに『cgi版ならご自由にどうぞ!』って言われていて、今回試行錯誤して何とか動くようになったので備忘録など。

実際の流れ

せっかくだからPHP7入れたい!

結論から言えばmysql使えないので怖くて断念。
cgi版のインストールとか.htaccessで特定フォルダで利用できるところまではおk。
phpinfo();
して 7.0.13 ってのをみて(ノ・ω・)ノオオオォォォ-ってなったのも束の間。
既存のDBにつないでデータを読みだそうとしたらエラー。

いろいろ調べた結果
./configure --with-mysql
出来ないので断念。
もっと方法はあるのかもしれませんが、動いてるサイトたちに何かあったら大事なので(;´・ω・)

気を取り直して5.6.28だ!!

PHP5系ならmysqlは廃止されていないので行けるはず!
ってことでこちらは手順を詳細に。

まずはDL

DL先は/home/src/にします。

# cd  /home/src
# wget http://jp2.php.net/get/php-5.6.28.tar.gz/from/this/mirror
# tar zxvf php-5.6.28.tar.gz

cgi版でインストール

モジュール版でインストールするときにつける
↓コレを入れないのがポイント
–with-apxs2=/usr/local/apache2/bin/apxs

# cd php-5.6.28
# ./configure  --prefix=/home/src/php-5.6.28 \
--with-config-file-path=/home/src/php-5.6.28 \
--enable-cgi \
--enable-mbstring \
--enable-mysqlnd \
--enable-exif \
--enable-ftp \
--with-gd \
--with-mysqli \
--with-pdo-mysql \
--with-mysql \
--with-jpeg-dir=/home/include \
--with-png-dir=/home/include \
--without-pear \
--program-suffix=56

# make
# make test
# make install

--program-suffix=56 を付けることでインストールされるプログラムの末尾に数字が付きます。
複数のバージョンを使い分けるときには便利。

確認してみる

# cd bin
# ls -lha
lrwxrwxrwx  1 root root      9 Nov 29 17:24 phar -> phar.phar*
-rwxr-xr-x  1 root root    53K Nov 29 17:24 phar.phar*
-rwxr-xr-x  1 root root    29M Nov 29 17:24 php-cgi56*
-rwxr-xr-x  1 root root   2.6K Nov 29 17:24 php-config56*
-rwxr-xr-x  1 root root    29M Nov 29 17:24 php56*
-rwxr-xr-x  1 root root   4.5K Nov 29 17:24 phpize56*

56がくっついてインストールされています

cgiとして動くように設定

httpd.confを確認

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

<Directory "/var/www/cgi-bin">
     AllowOverride None
     Options FollowSymLinks
     Order allow,deny
     Allow from all
 </Directory>

シンボリックリンクの作成

Options FollowSymLinksの記述があればそのまま、なければ追加してシンボリックリンクを作成

# cd /var/www/cgi-bin
# ln -s /home/src/php-5.6.28/bin/php-cgi56 php56

PHP5.6.28で動かしたいディレクトリに.htaccessを設置

Action php56-script /cgi-bin/php56
AddHandler php56-script .php .html

phpinfo();

PHP7を入れようとしたときは

ここにmysqlを表示させることができなかったのですが…
今回は無事にmysqlが!!

データを読み込んでみる

エラー:mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

冒頭にこのエラーが出て、その下にはdatetimeセットしてよ!というアラート。
datetimeはさくっと解決して、google先生に質問です。

要するにパスワードの形が古いから繋げないよ?ということらしい。
PHP5.3でMySQL接続エラー(old_passwords=1)
こちらを参考にパスワードの再設定。
無事にデータを読み込めました。

5.2.4でできなかったことやって確認してみる

一番手っ取り早そうだったので

$color_set = [
           "black"  => "黒",
           "red"    => "赤",
           "blue"   => "青",
           "yellow" => "黄",
           "green"  => "緑",
           "gray"   => "灰"
         ];

var_dump($color_set);
/*
  ["color_set"]=>
  array(6) {
    ["black"]=>
    string(3) "黒"
    ["red"]=>
    string(3) "赤"
    ["blue"]=>
    string(3) "青"
    ["yellow"]=>
    string(3) "黄"
    ["green"]=>
    string(3) "緑"
    ["gray"]=>
    string(3) "灰"
  }
  */

( ´∀`)bグッ!

とりあえず最低限の動きは確保できたようです。