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

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

takuya_a_yamamoto

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

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


環境としては
(旧)
・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 mailing list  [hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3
Loading...