[PHP-users 35819] PHPで構築したシステムのサーバー移行について

takuya_a_yamamoto @ ricoh-japan.co.jp takuya_a_yamamoto @ ricoh-japan.co.jp
2014年 9月 5日 (金) 15:17:09 JST


とあるシステムが動作しているサーバーの老朽化に伴い
システムを別サーバーへ移設することとなりました。

新サーバーにプログラムファイルやデータベースを移設したところ
エラーが発生していまい、原因を探っています。
そこで以下の内容についてお知恵をお借りできればと思い、投稿しました。


環境としては
(旧)
・Windows2003server 32bit
・PHP:	5.2.13
・CakePHP:	1.2.7
・Apache:	2.2.15
・Postgre:	8.4.4-1

(新)
・WindowsServer2012 64bit
・PHP:	5.5.15
・CakePHP:	1.2.7
・Apache:	2.4.10
・Postgre:	9.2.9.1
となっています。
新環境にPHP・Apache・Postgreインストール、設定後、旧サーバーからプログラム
ファイルをコピーしそのままドキュメントルートに保管しています。
Postgreも旧サーバーから対象のデータベースをバックアップ⇒新サーバーでリスト
アしています。
※database.phpで接続先サーバーを新サーバーに変更しました
※php.ini、httpd.confも旧サーバと同じ設定になるよう記述しています

ここまででログイン画面(index.php)は表示されるようになり、IDとパスワードを入
力してログイン処理を走らせたところ、次の画面で以下のようなエラーが発生しま
した。

■エラー内容
Warning (2): pg_query() [function.pg-query]: Query failed: ERROR:  型
integerの入力構文が無効です: "\x3234"
LINE 1: ...Aro0"."model" = 'User' AND "Aro0"."foreign_key" = '\x3234'  ...
                                                             ^ [CORE\cake
\libs\model\datasources\dbo\dbo_postgres.php, line 148]


実際のエラーは、「"foreign_key" = '\x3234'」部分が原因で、foreign_keyには数
値しか入らないはずが「'\x3234'」という文字列を当てようとしてエラーとなって
いるようです。
実際にデータベースを確認してもforeign_keyにあたる項目には2ケタまでの数字し
か登録されていません。

この時試したログインユーザーが持っているforeign_keyは「24」なのですが
ログイン処理の中では「'\x3234'」として扱われてしまっているようです。
試しにほかのログインユーザーでやってみたところ、以下のようになりました。

9	'\x39'
7	'\x37'
23	'\x3233'
24	'\x3234'

左がforeign_keyで、右が実際にSQLで使われるものです。
頭に「\x3」がつき、二けたある場合は二けた目の前に「3」がつくようです。


プログラムもデータも旧サーバーのまま使用しているため、原因があるとすればPHP
やapacheのバージョンが上がっていることで何か設定が変わったことか?と思って
いるのですがなかなか原因に行きつけません。


これを解消するには、どのような対応が考えられますでしょうか。

※初の質問で情報が足りていないかもしれません。その際はご指摘ください。



PHP-users メーリングリストの案内