PHP + PostgreSQL
■ このスレッドは過去ログ倉庫に格納されています
0001りさあ
NGNG0549nobody
04/01/12 21:34ID:DtxerTTK0550nobodyさん
04/01/12 21:47ID:???0551nobody
04/01/12 22:22ID:DtxerTTK具体的ではあったがPHPの一部分しかあつかってなかった…
webのほうが為になる気が…
0552nobodyさん
04/01/13 00:46ID:???あとはwebでどうにかなる。
0553nobodyさん
04/01/13 01:31ID:???これが結構良かったけど
0554nobodyさん
04/01/23 17:29ID:???商品を編集するのに管理画面でやるのは面倒くさいので、
CSVでダウンロードしてエクセルで修正してまたアップロードしたい
って言われたんですけど、UPDATE に対応した COPY コマンドみたいなことってできませんでしょうか?
PHP で一行ずつ商品番号を調べて UPDATE でもいいんですが、時間がかかってしまうので。。。
何かいい方法があったら教えてください。おながいします。
0556nobodyさん
04/01/23 20:29ID:???1000件程度であればそんなに時間かからないと思うんですけど、そんなに商品の数多いんですか?
0558nobodyさん
04/02/11 22:13ID:EReQ7yHaTeraTermの端末設定は送受信ともEUCにしてEUC_JPにしたDBを開きます。
# psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
testdb | postgres | EUC_JP
# psql testdb
# \encoding EUC_JP
testdb=# SELECT * FROM report;
number | title | report
--------+-------------+---------
1 | <A5><BF><A5><A4><A5><C8><A5><EB>1 | <CB><DC><CA><B8>1
2 | <A5><BF><A5><A4><A5><C8><A5><EB>2 | <CB><DC><CA><B8>2
とまぁこんな調子です。
ホントは 1,タイトル1,本文1と入っているのに。
ちなみにPHPからブラウザを通してみると正常に見えました。
TeraTermの問題でしょうか?
0559nobodyさん
04/02/13 10:50ID:JC2NxhSZ0560nobodyさん
04/02/13 10:57ID:???逆にお伺いしますが、リモートにインストールってどうやってやるんでしょう?
あ、それともグローバルの反対のローカルかな?んな訳ないか…。
0561nobodyさん
04/02/13 12:09ID:JC2NxhSZ0563nobodyさん
04/02/14 13:57ID:???0564nobodyさん
04/02/14 16:06ID:???0566nobodyさん
04/02/14 17:04ID:???WindowsでPostgreSQLとゆーと、
有料だけとPowergresとか、cygwin上で動かすくらいかな。
WindowsNativeなものを作ってた人もいたけどもうメンテしてなかった気がする。
Linuxはあちこちに情報があるので割愛。
Macはよく知らない。
0567nobodyさん
04/02/14 17:24ID:???英語だけど、ここが参考になります。
ttp://www.entropy.ch/home/
0568nobodyさん
04/02/14 19:29ID:???1. Finkでreadlineをインストール
2. PostgreSQLをビルド&インストール
$ ./configure --with-includes=/sw/include --with-libraries=/sw/lib
$ make
$ sudo make install
3. システム環境設定の「アカウント」からユーザ「postgres」を作成。
名前欄は「Postgres」とでもしておく。
つづく。
0569nobodyさん
04/02/14 19:30ID:???if [ -e /usr/local/pgsql/ ]; then
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export PATH=$PATH:$POSTGRES_HOME/bin
export MANPATH=$MANPATH:$POSTGRES_HOME/man
fi
5. PosgreSQLを初期化&起動
$ cd /usr/local/pgsql
$ sudo mkdir data
$ sudo chown postgres:postgres data
$ sudo chmod o-rwx data
$ sudo su postgres
$ initdb --no-locale --encoding=UNICOCE -D $PGDATA
0570nobodyさん
04/02/14 19:35ID:???/Library/StartupItemsに関連ファイルを入れればおしまい。
これはentropy.chのパッケージ(pgsql-startupitem-1.2.pkg)を使えば一発だし
自力でやりたいのならDarwin用にビルドしたときにPostgresのStartupItemが生成されて、
設定方法も表示されるからそれに従えばOK・・・・だった気がするんだけど
これについてはメモを取り忘れてて思い出せないっス。
0571nobodyさん
04/02/14 19:39ID:???makeの前にsudo ranlib /usr/local/pgsql/include/libpqしないとエラーが出ることがあるのに注意。
0573nobodyさん
04/02/15 16:03ID:Axezk+8khttp://www.nagatanien.co.jp/
pg_connect() unable to connect to PostgreSQL server: connectDBStart() -- connect() failed: No such file or directory
:
:
このエラーが出るってことは、テストしていないってことか?
ここ見てる担当者、何とかしたほうがいいんじゃない?
http://www.nagatanien.co.jp/cgi-bin/printenv
↑
このプログラム、普通消さないか?
0574nobodyさん
04/02/15 17:42ID:???0575nobodyさん
04/02/15 18:33ID:???DBのフィールド名までおっぴろげでるぞ。
0576森の妖精さん
04/02/15 18:40ID:???ポートもデフォルトだし。もしかしてパスワードとか設定してなかったら
ガクガクブルブルものだな。
0577nobodyさん
04/02/15 21:55ID:???0578nobodyさん
04/02/15 22:30ID:???0580nobodyさん
04/02/16 01:53ID:???/func/の下も.htaccessで遮断してないので.inc読めちゃうし...。
0581nobodyさん
04/02/16 17:19ID:???0582nobodyさん
04/02/17 01:52ID:???ここ見たのかねw
0583582
04/02/17 01:53ID:???0584nobodyさん
04/02/17 21:42ID:???でも結局、どのモジュールも古いな。
なんでわざわざ古いモジュール使ってるんだろ?
http://uptime.netcraft.com/up/graph?site=www.nagatanien.co.jp
0585nobodyさん
04/02/18 07:43ID:???たかがこのエラーの修復ぐらいで何でそんなに時間がかかるのかと
不思議だったが、何とOSの入れ替えをしてたのか...w
相変わらずHTTPS開いているし
証明書、localhost.localdomainだし(Turboのときはsnakeoilのヤツだった)
エンジニアとしてはレベル低いかもw
0586nobodyさん
04/03/05 22:55ID:???Solaris+PostgreSQL不明+PHP不明を使っています。
TIMESTAMP型のカラムへPHPのフォームで入力した値を入れようとするとエラーで、データが登録できません。
ちなみに入力しようとした値をそのままpsqlコマンドで入力したら正常に登録出来ました。
Linux+PostgreSQL7.3+PHP4.3.1の場合、同じソースで問題なく利用できました。
SQLとPHPのバージョンが確認できていなくあれですがこれは何が悪いのでしょうか?
0587nobodyさん
04/03/05 23:25ID:???0588nobodyさん
04/03/06 01:30ID:???0589nobodyさん
04/03/06 16:09ID:???ぐぐってみてもそれらしい問題が出てこなかったんだけどなぁ。
ヒントだけでも下さい。。。
0590nobodyさん
04/03/06 16:23ID:???0591nobodyさん
04/03/06 18:20ID:???エラー内容は下記の通りです。
Warning: pg_query() [function.pg-query]: Query failed: ERROR: parser: parse error at or near "00" at character 37 .
で、実際にpg_queryに渡しているのは、
INSERT INTO date VALUES ('2004-03-06 00:00:00')
です。
値の渡し方がマズイのでしょうか?
0593nobodyさん
04/03/06 19:07ID:???> 実際にpg_queryに渡しているのは、
> INSERT INTO date VALUES ('2004-03-06 00:00:00')
> です。
ほんとか?
0594nobodyさん
04/03/06 20:12ID:???失礼しました。テーブル構造です。
sql_test=# \d date
Table "public.date"
Column | Type | Modifiers
--------+-----------------------------+-----------
date | timestamp without time zone |
>>593
pg_queryに渡した変数をそのまま変数で書き出してペーストしたので間違っていないかと思います。
問題点を明確にする為にTIMESTAMP部分を抜き出して下記のような感じでテストしています。
現在手元にSolarisをいじれる環境がないので、アドバイス結果をすぐには試せないのですが、
RedHatの鯖ではこれで問題なく動きました。
Solarisの鯖では何故か>>591のようなエラーが。。。
<?php
$inc_pg['sql_query'] = "INSERT INTO date VALUES ('" . $_POST['fdate'] . "')";
$string = 'dbname=sql_test';
$db['handle'] = pg_connect ($conn);
$pg['exec_id'] = pg_query ($db['handle'], $pg['sql_query']);
pg_close ($db['handle']);
print 'sql =>' . $pg['sql_query'];
?>
足りない情報がありましたら出せるだけ出しますので、よろしくおねがいします。
0595586
04/03/06 20:16ID:???スクリプトで一部間違ってました。
>$string = 'dbname=sql_test';
>$db['handle'] = pg_connect ($conn);
-----
$conn = 'dbname=sql_test';
$db['handle'] = pg_connect ($conn);
0596586
04/03/06 20:20ID:???>$inc_pg['sql_query'] = "INSERT INTO date VALUES ('" . $_POST['fdate'] . "')";
-----
$pg['sql_query'] = "INSERT INTO date VALUES ('" . $_POST['fdate'] . "')";
0597nobodyさん
04/03/06 21:53ID:???pgsqlのバージョンは、select version(); で確認できる。
phpもpnpinfo();でわかる。
で、ひょっとしたらYMDじゃなくて、MDYに設定されているのかも?
確認方法があったと思うが失念。
'03/06/2004 00:00:00'でやるとどうなるかな。
0598586
04/03/06 23:54ID:???アドバイスありがとうございます。
SQLインジェクションについてはまだ考えてません。
それはおいおい学習していきたいと思います。
バージョン情報の確認とMDY形式の入力を試してみたいと思います。
0599nobodyさん
04/03/07 17:08ID:???でもどっちで明らかな奴は自動で判別するけどな
0600nobodyさん
04/03/08 04:17ID:???Mac OS X 10.2.8,PostgreSQL 7.4.1,PHP 4.3.4で
全てソースをコンパイルして環境を作っていたんですが、
同じ現象に悩まされました。
ただ、
ld: unknown flag: -export-symbols
なわけだから、
Makefile の該当行でそのフラグを指定してる箇所を削って
次のようにしたら make は成功しました。
EXTRA_LDFLAGS = -L/usr/local/pgsql/lib
0602586
04/03/08 21:02ID:???それで'03/06/2004 00:00:00'の形式で入力しましたら無事にDBに登録されました。
アドバイス、本当にありがとうございました。
これで次に進めます。
0603S.N
04/03/11 20:48ID:Gs6PweG/知ってたら教えて下さい。宜しくお願いします。
0604nobodyさん
04/03/13 01:00ID:36IkPElZ同環境の鯖からpg_dumpallしたファイルを
psql -f しようとしたら
「\connect: FATAL 1: IDENT authentication failed for user "xxxx"」
と怒られてぐぐった結果
pg_hba.confのlocalをall trustにしたんですけどまだ同じ症状なんです。
他に権限設定するファイルってあったら教えてください。
あと自宅鯖ですがpg_hba.confのlocalをall trusって危険ですか?
0605ネットdeDVD(・∀・)♪ ◆uRDVDsgexc
04/03/13 01:06ID:???0606nobodyさん
04/03/14 14:23ID:???よくわからんけど、ラージオブジェクトは使ってる?
pg_dumpall -g > "filename"
で、グローバルデータのバックアップはやった?
0607nobodyさん
04/03/15 11:56ID:u5uDbosWラージオブジェクトは使ってないんです、
オプションは-fだけ付けてダンプでした…、
もう一度新鯖の方、DB初期化からやり直してみるカナ…。
0608nobodyさん
04/03/15 13:16ID:???0609nobodyさん
04/03/16 03:09ID:0I5atoz5すいません、initdbしちゃいました。
(そしたらあっさり動きました!)
今回のトラブル中でgoogle引いているなかで一つ気になったのが
hba.confでのlocalの設定の書き方なんですが、
どこだか忘れましたがあるサイトで
local all all trust
ってー書き方しているページがあったんですが
http://ml.postgresql.jp/pipermail/pgsql-jp/2002-September/002592.html
とかオンラインマニュアルなんかは
local all trust
ですよね?
見間違えかナア?
0610nobodyさん
04/03/16 03:10ID:0I5atoz5606さん
608さん
どうもありがとうございました!
0612nobodyさん
04/03/18 05:39ID:zQ2yHGPupg_hba.conf の詳細は、PostgreSQL のドキュメントの 6.1. The pg_hba.conf fileにあります。
セカンダリパスワードが廃止されました。
USER カラムが追加されました。
データベースとユーザをカンマ区切りで列挙できるようになりました。 また、+グループ名でグループを、 @ファイル名でデータベース名またはユーザ名を記述したファイルを指定できるようになりました。
キーワードsamegroupが追加されました。
だそうです。
http://www.us.postgresql.org/users-lounge/docs/7.3/postgres/client-authentication.html
0613nobodyさん
04/03/20 09:22ID:???┌─┬─┬─┐
│○│△│×│
├─┼─┼─┤
│◎│□│◇│
└─┴─┴─┘
TABLEを用いてDBの値を上記のように表記したいのですが
PHPとPostgreSQLの組み合わせの定石などありますでしょうか。
PHP変数のスコープ範囲をグローバルとして確保するなら
SQLから変数へ一度に値を確保しておいて
<TABLE><TR><TD><?echo $変数1?></TD><TD><?echo $変数2?></TD>......
などとできそうかなと考えたのですけれど、下策でしょうか。
0614nobodyさん
04/03/20 10:06ID:???プログラミングそのものが始めてというならそれでも構わんが、
とりあえずやって慣れないとな。
次ステップとして、foreach文でループしながら書き出す。
その次は、PEARのHTML_Tableを使って書き出す。
また、その次はテンプレートを使って書き出す。
手法はいろいろあるから、技術レベルとサイトの規模に合わせて
使い分けすりゃいいべ。
0615nobodyさん
04/03/20 11:25ID:???つまり各個別で変数をひとつずつ出力するよりも
タグまで出力することを一区切りとして実装した方が
負荷が少ないということになるのですね。
テンプレートは自分でクラスを作ればいいということでしょうか。
HTML_Tableは<TBODY>や<COL>要素が出力されないようなので
自分で作ってみようと思います。
ありがとうございました。
0616nobodyさん
04/03/22 16:39ID:QoPkBfoi配信するプログラムを作ろうと思ったんですがそのcronで呼ばれる方のphpは
コマンドライン版(プログラムの頭に#/×××/×××/php とか付く奴)にあたると思うんですが
デバグ時にコンソールから直で呼び出した時にエラーをモニタにだしたいんですが
なにかオプション付けて実行とかどなたかご存知でしょうか?
0618616
04/03/23 04:32ID:PH/L9hMF#!/usr/bin/php -qを頭につけて
クーロンと直接実行と両方試したんですが
エラーもはかずに配信もされないんですが
コマンドライン版特有のデバグ方法等ありましたら
url等情報頂けたらありがたいです。
0620616
04/03/23 18:38ID:zP9z4yZ0/var/log/mail_logには一切メールを送った形跡なし…。
何故エラーすら吐かないんだろう?
0622616
04/03/23 20:48ID:zP9z4yZ0ドモです、さっそくやってみます。
0623nobodyさん
04/04/06 12:05ID:irRO9IOrPostgresのビット演算についてお力をお貸しください。
text_a varchar(5) と宣言してある所に 00110 の文字列が入っています。
それに対して 00010 の文字列で&演算したいのですが、エラーになってしまいます。
■エラーが出た部分(一部抜粋)
WHERE ( CAST( text_a AS bit ) & B’00010’ ) > B’00000’
■エラー文
varchar から bitへの変換ができないといわれます。
何かこれを回避する方法または別の手段が無いでしょうか?
お力をお貸しください。
0624nobodyさん
04/04/06 13:28ID:???ビット型に変換しなくとも。
WHERE (text_a::int & '00010'::int) > 0
で、目的は達成すると思われ。
0626623
04/04/06 14:48ID:irRO9IOr結果報告です。
ERROR: Cannot cast type 'varchar' to 'int4'
でダメでした。とほほ
0627624
04/04/07 16:53ID:???(text_a::text::int & '00010'::int) > 0
ならどぉよ。
0629nobodyさん
04/04/07 22:11ID:???0630nobodyさん
04/04/18 00:22ID:jle0qDKtマシンで兼用させることは出来るのでしょうか?
その場合IPが一緒になると思うのですが試したことのある方がいたら
教えてください。
ハードディスクを2つのパーティションに切って、片方をDBサーバ
OS:Linux
DB:Postgres
もう片方をWebサーバにしようと考えています。
OS:Win系
HTML、PHPで携帯サイトもどきを作ろうと考えています。
資金の都合があり、一台のPCで済ませようとしているのですが
根本的にありえない質問でしたらお許しください。
実際のサイトではまずありえない環境なのはわかっています。
他サイトを調べたのですが情報を得ることが出来ませんでした。
最後に来たのがここなわけで・・・。
0633nobodyさん
04/04/18 00:49ID:gbPENzjB0634nobodyさん
04/04/18 00:50ID:???うるさいよマルチ野郎
http://pc5.2ch.net/test/read.cgi/hp/1082203621/17
0635630
04/04/18 01:32ID:jle0qDKtすみません。ルール違反と知りつつもマルチしてしまいました。
>>632
仕事でやっている環境に合わせて勉強したかったもので。
>>631
説明不足でした。すみません。
公式サイト等ではサーバー負荷を考慮してDBとWebサーバを
別々にするので、ほとんど無いという意味で書き込みしました。
非公式サイトの開発・運用経験をお持ちの方ならやり方を
知っているのではないかと思い質問させてもらいました。
634のリンクさきのスレに書き込んでいただいた方のおかげで、
なんとか出来るかもしれないことがわかりましたので、
今色々と調べています。
0637nobodyさん
04/04/18 02:54ID:XCZiYJqw次のようなエラーが出ます
Warning: pg_query(): Query failed: ERROR: invalid byte sequence for encoding "EUC_JP": 0x8e44
どうすればよいのでしょうか?
0638nobodyさん
04/04/18 04:06ID:???そりゃDBも往生しまっせ
0639nobodyさん
04/04/25 13:29ID:???0640nobodyさん
04/04/26 02:10ID:WthorSeHそれやったけど駄目でした・・・
0641nobodyさん
04/04/27 23:01ID:???0642nobodyさん
04/04/28 01:20ID:v4hgreAJできました。
ありがとうございます。
0643nobodyさん
04/05/01 13:52ID:mFnw69owHINT: Check free disk space.
ってエラーが出るのですが何が原因ですか?
サーバースペースは余ってる筈なんですけど、、、。
0644nobodyさん
04/05/01 14:09ID:jvss00O+0645nobodyさん
04/05/01 17:49ID:wi9QOksvとりあえず「可能」と答えておこう。
質問の意味がまったく分からないけど。
0646nobodyさん
04/05/02 20:46ID:???>>645
こういうことじゃない?
-hatena.cgi------------------------------
open(IN, "datafile.txt");
while ($xx = <IN>) { print $xx; }
close(IN);
<?php
$fp = fopen('write.txt', 'w');
fputs($fp, "****\n");
fclose($fp);
?>
----------------------------------------
だったら俺の知ってる限りでは無理
0647nobodyさん
04/09/11 05:17:25ID:???正規表現とかな?
0648nobodyさん
04/09/11 05:24:59ID:???■ このスレッドは過去ログ倉庫に格納されています