仕事でやることになるかもしれない某サイトリニューアルの商品カタログのシステム開発でCakePHPを使おうとしたら、四苦八苦(><;
あらすじ
なんでもサーバが2005年稼動開始からOSアップグレードしてない、未だにRedHat ES3を使ってるやつだとか。中規模案件なのでCakePHPでさくっと作りたいところですが、いかんせんアプリのバージョンが。。。
PHP 4.3.2、MySQL 3.23、PostgreSQL 7.3.15。
MySQLはすでに論外なので、PHP+PostgreSQLで挑戦することに。そして、とりあえず開発環境が作れるのかどうか、検証するために実際にサーバーを用意してみました。
環境構築
PostgreSQLの旧版が入手できそうにないので、OSごと取って来ることに。RHES3に似たものとしてCentOS3.9を選択。VirtualPC上にインスコしました。意外とあっさり。
OSインストール後に各種アップデートとPostgreSQLをインスコ。yumで入れました。
# yum update
# yum install rh-postgresql rh-postgresql-server
なんかrhって付けないといけないようです。pg_hda.confとpostgresql.confをいじって外部接続可能にした後、pgAdminで接続して、新規データベースを構築。
あとはApacheの設定を適当にやっておきました。
CakePHPを配置
Apacheの設定を適当にしたのち、CakePHP1.2.5を取ってきてドキュメントルートに展開しました。database.confの作成は普通に。tmpディレクトリのパーミッション変更。core.phpの各種設定。ここまではいつもどおりです。ファイルの編集はviだとたるいのでWinSCP使ってWindowsのエディタで直接編集ヽ(´ー`)ノ
謎エラー
とりあえず、Cakeのルートに直接アクセスしてみました。そしたらとんでもないことに。。。
Warning: fread(): 18 is not a valid stream resource in /path/to/public_html/cake/libs/file.php on line 183
Warning: fclose(): 18 is not a valid stream resource in /path/to/public_html/cake/libs/file.php on line 282
(´・ω・`) なんか上記エラーがたくさん出るんですが。。。とりあえず、なんのファイルでつまずいてるのかダンプして調べてみました。どうやらキャッシュディレクトリの中にあるcake_core_core_paths
あたりのようです。さて、どうしよう。
ポクポク・・・・・・チーン。そうだ、キャッシュまわりかもしれない!
てなわけでキャッシュを無効化。core.phpの該当部分のコメントアウトを外します。
Configure::write('Cache.disable', true);
ビンゴ!なんとか治まりました。トップページが正常に表示されています。でもキャッシュ使えないのは残念なことこの上ない。
PostgreSQL 7.4の壁
この勢いで行ってしまえるかとおもいきや、大きな壁に立ちはだかりました。
bakeを実施してみたところ、「INFORMATION_SCHEMAなんて名前空間ねえよ!」って警告が現れ、うまく焼けません。調べたところによるとINFORMATION_SCHEMA
はバージョン7.4以降じゃないと使えないそうです。てゆうか、CakePHPの動作条件ってPostgreSQL 7以降じゃなかったのか。。。
代替法が無くは無いのでdbo_postgres.phpの該当部分を頑張って試行錯誤しながら修正なう。
今日は帰る。
コメント