電子書籍の厳選無料作品が豊富!

はじめまして。
現在、以下のシステム構成でWEBシステムを作成しています。

▼システム構成
----------------------
 CentOS 5.97
 PHP 5.1.6
 POSTGRESQL 8.1.9
 Apache 2.2.3
----------------------

PHPを使用して、画像ファイルをバイナリデータに変換し
DBに格納しようとしていますが、うまく動作しません。

▼ソース
----------------------
//画像をバイナリ型に変換します。
$fn = "../../images/uploaded/$image_name";
$cn = @file_get_contents("$fn");
$esc_image = pg_escape_bytea($cn);
//DB登録に写真を登録します。
$s="";
$s.="insert into cbphoto(";
$s.=" photoid,";
$s.=" photo";
$s.=") values (";
$s.=" $photoid,";
$s.=" '{$esc_image}'";
$s.=")";
$r=pg_exec($db,$s);
----------------------

小さいファイル(20kb以下前後)は問題なく格納できるのですが、
大きいファイルの場合は、格納されません。
※ただし、上記のphotoidは格納されます。
 また、エラーメッセージも出力されていない様です。

マニュアルを確認するとバイナリ列は1GBまで格納できると
記載されていましたが、ファイルサイズが原因で格納できないのでしょうか?
また、他に原因があるのでしょうか?
(ラージオブジェクトじゃないとダメ等)

以上、お手数ですがよろしくお願いいたします。

A 回答 (1件)

php実行でシステム上のメモリーを使いきっているか、(ユーザのメモリ上限とか)


もしくは、$sは実際には1Gを超えているとか

$r=pg_exec($db,$s);
の$sは期待している文字列(文字長)していされているのかな・・?
    • good
    • 0
この回答へのお礼

返信が送れて申し訳ありません。解決いたしました。
DBの列には空白で表示されていたみたいなのですがバイナリデータ量が多すぎて表示できてなかったみたいです。

なので実際はちゃんとデータは入っていて、格納もできて取り出すこともできました。

ありがとうございました。

お礼日時:2008/06/16 10:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!