サクッと動いて簡単だったー というネタにしたかったのに、真逆の更に斜め上を行くという事態に。
移行はちょっと置いといて、3.6を真っ新な状態からセットアップしたらどうだろうか。
同じようにプラグインを入れるところで Failed install 。(←ホントにこういう表示
なんでだー(暴
・・・・・・!!
突如 脳内に何か降臨。
・・・やっぱりPHPのバージョンじゃね?
調べてみるとPHP7では動かない情報がゴロゴロ出てくる。
っつーか、実質PHP5.2じゃないと綺麗に動かないってどういうことよ。
※綺麗に動かない=エラーやワーニングなしで動くって意味で。
OpenPNE3の開発タスクとしてチケットが切られているけど、何も進んでいないように見えるw
新安定版だったら対応してるっぽいけど、そもそも2.14から3.6に移行ができないので
そのバージョンまでたどり着かない。
答えに限りなく近いけど面倒で目を背けていた方法を採るしかない。
複数のPHPバージョンを共存させてみる
普通にyum install php~
でインストールするのはモジュール版と呼ばれるもの。
もう1つ、CGI版というのがある。
レンタルサーバなんかでPHPのバージョンを選べるようにしてあるのはCGI版。
CGI版であればアプリごとに好きなPHPバージョンで動かすことができる。
動作が遅いというのがデメリットの1つだけど、多分気にならないはず。・・・だと良いな。
CGI版はここからダウンロードできる。
今動いているサーバとバージョンを揃えるために、ターミナルで繋いでバージョン確認。
らしい というか、今のレンタルサーバに引っ越ししたときに俺が設定したんだけどw
このバージョンを探してダウンロード。
サーバの適当な所に配置して解凍。
んで、コピー。俺は/usr/local/src/php-5.2.17
に置いた。
5.2.17はエラーになるのでパッチを当てる必要がある。
ここから落としてサーバの適当な所に配置して解凍。
名前が長いので変更。mv libxml29_compat.patch php-5.2.17.patch
これまた適当な所に移動。やっぱり/usr/local/src/php-5.2.17.patch
に置いた。
開発用のライブラリとかが入っていないので入れる。
俺はこの3つで済んだ。
- mysql-devel
- patch.x86_64
- libxml2-devel
まずはパッチ当て
cd /usr/local/src/php-5.2.17
patch -p1 < ../php-5.2.17.patch
どのファイルか聞かれるので
- ext/dom/node.c
- ext/dom/documenttype.c
- ext/simplexml/simplexml.c
を指定。
そしていざ、configure
→make
→make install
だ!
こんな作業何年ぶりだ?w
--prefix=/usr/local/lib/php-5.2.17 \
--with-config-file-path=/usr/local/lib/php-5.2.17/ini \
--with-libdir=lib64 \
--with-mysql \
--with-pdo-mysql \
--enable-mbstring \
--program-suffix=52
configureやmakeなんかでエラーが出たら逐次直して再度実行する。
(無事に通過したとしても割と時間かかります)
続いてhttpdに設定追加&変更。
vi /etc/httpd/conf/httpd.conf
に
と
Options +FollowSymlinks +IncludesNoExec
AllowOverride All
Require all granted
</Directory>
を設定。
上記で設定したcgi-binにPHP 5.2.17のシンボリックリンクを張る。
ln -s /usr/local/lib/php-5.2.17/bin/php-cgi52 /var/www/cgi-bin/php52-cgi
実際に動かす資材のルート(例:/var/www/htmo/OpenPNE3.6/web)に .htaccess を設置する。
中身はこんな感じ。
<filesMatch "\.php$">
SetHandler php52
</filesMatch>
これでPHP5.2.17で実行されるはず!
試しに
var_dump( phpinfo() );
?>
だけが書かれたPHPファイルをルートに設置して、ブラウザで開こう。
色々な情報が記載されたページが表示されればOK(・∀・)
ここに到達するまで3日かかってる(ノ∀`)
で、終わった感が出ているけど、OpenPNEを動かしていないので
ようやくスタート地点に戻ってきた状態だったりする。