[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 メーリングリストの案内