FreeBSDのPHPインストールにハマル
自分自身の覚え書きとしても書いておくことにする。
サーバー設定に関しては全くの素人である。
閉じたエリアでWEBサーバーを立ち上げて、
本サーバーにUpする前の確認用として使う
程度のことしかできない。
(いや、コレが割と重要で、確認は必要ですよぉ~)
要するにテスト用サーバーをイロイロと弄っていたワケですな。
※もちろん仕事で、社内での作業中
以前はFreeBSD4系で、ApacheもPHPもPostgreSQLも全てソースから
configre → make
の「定石」をやっていたワケです。
が、イロイロ事情があり現在はFreeBSD6.1(1.280)。
最初に環境を書いておくが、他の環境では別だろうとも思うんで、あくまで参考です。
FreeBSD6.1(1.280)
PostgreSQL 8.1.9
MySQL4.1.22
PHP4.4.7
トラブルは拡張の関数(マルチバイト系など)が無いというエラー。
それに該当する方は、長い続きをど~ぞ。
きっかけはPostgreSQLとMySQLのバージョンを上げるって作業。
CMSの実験のために要求バージョンであるMySQLを入れたかったのだ。
まぁ、PostgreSQLのバージョンアップは「ついで」
「ついで」と言えば、ついでにphpPgAdminもphpMyAdminもバージョンアップした。
さてさて、上記作業も一段落し、なんとか安定動作するようにはなった。
(まぁ、若干の「警告」的なものは出ているが…)
ということで、何故、ドコにハマったのかということを書いておくことにする。
最大のトラブルはPHPのインストールだった。
コレは盲点だった。
まず、手抜きをするためにports(/usr/ports/lang/php4)からインストールを始める。
(諸般の事情からPHP4系をインストール)
ところがだ、
マルチバイトの関数
データベースの関数
そのほかやたと「無いよ!」と叱られる。
結論から言うと、
拡張部分は別のports(/usr/ports/lang/php4-extensions)からインストール
する必要があるのだ。
「まさかな」と思ってやった「php4-extensions」でのmakeでビックリ!
TEXTベースのメニューが出て、モジュール選択ができるのだ。
当然、マルチバイト系とデータベース系を選択。
しかし、問題はこれだけではない!
実は、make時に表示される「インストールしたよ!」ってのはまやかしなのだ。
インストール先に「/usr/local/lib/php/XXXXXXXX」(XXXXXXXXは数字)
が表示される。
これが曲者で、
PHPではこのインストール先を知らない
のだ。
各局、
「/usr/local/etc/php.ini」の中にある
「extension_dir」へ
「/usr/local/lib/php/XXXXXXXX」を指定
してやらないとダメ。
ここまで分かるのに、何度Google先生にお世話になったことか…
この時、何度もextensionsをmakeしたので、「欲を出して」沢山のモジュールを指定したことが別のトラブルを引き起こす。(後述)
さて、上記のように何度もextensionsをmakeしたので、そのときにもひとつ分かったことがある。
最初に起動した時しか、モジュールを選べない
ということだ。
この作業を何度もやりたければ
make config
としてやる必要がある。
もっとも、この作業で生成されるファイルが
/var/db/ports/php4-extensions/options
に記述されているので(MySQLモジュールの場合)
インストールしたいモジュールは「WITH_MYSQL=true」
インストールしたくないモジュールは「WITHOUT_MYSQL=true」
とすることでコンパイルはできる。
紆余曲折、マル2日間を要した試行錯誤も大詰め。
最後の問題だ。
Apacheを起動すると(syslog上で)
signal 11 で coredump
してしまい、上手く起動できない。
またまた、Google先生にお伺いをたてると、
拡張モジュールの読み込み順序が悪い
ということに。
拡張モジュールの読み込み指定は
/usr/local/etc/php/extensions.ini
にあり、
extension=mysql.so
などと書かれている。
(ディレクトリはphp.iniのextension_dir指定しているので、ここでは不要)
イロイロやってみた結果、
いくつかのモジュールでエラー要因となるので、行頭に「#」を付け
て、コメント化。
さらに、Google先生経由で行き着いた先に記述があった、
session と recode を先頭へ移動
することで、無事にApacheが起動した。
長かったわぁ~。
※各記事(エントリー/投稿)の内容は投稿時のものです。閲覧時とは異なることがございますのでご了承ください。
コメント投稿