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版ならご自由にどうぞ！』って言われていて、今回試行錯誤して何とか動くようになったので備忘録など。

# 実際の流れ
## せっかくだからPHP７入れたい！
結論から言えばmysql使えないので怖くて断念。
cgi版のインストールとか.htaccessで特定フォルダで利用できるところまではおｋ。
`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を確認
```apache
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を設置
```apache
Action php56-script /cgi-bin/php56
AddHandler php56-script .php .html
```

### phpinfo();
PHP7を入れようとしたときは
![2016-11-29_18h55_27.png](https://qiita-image-store.s3.amazonaws.com/0/71000/168c52b5-3c39-b9c1-b6b8-1a588f2e3204.png)

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

### データを読み込んでみる
エラー：mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

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

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

## 5.2.4でできなかったことやって確認してみる
一番手っ取り早そうだったので

```php
$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ｸﾞｯ!

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