トップページ⇒php
981コメント318KB

【PHP】PEAR Part2

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/08/01(月) 21:27:12ID:pG+mahP3
落ちてたんで立てとく

■PEAR
http://pear.php.net/

■前スレ
Pear
http://pc8.2ch.net/test/read.cgi/php/985665522/
0283nobodyさん2006/02/01(水) 18:05:00ID:???
PEARでXMLを扱う場合におすすめなのは、何ですか?
0284281-2822006/02/01(水) 20:51:33ID:???
>>281-282
気のせいでした。。。_| ̄|○ il||li
接続設定が違っていた模様・・・

スレ汚しスマソ(´・ω・`)ショボーン
0285192.168.0.774 2006/02/02(木) 10:25:44ID:rSyssRqD
>>283
PEARじゃなくともSimpleXML使えばお腹いっぱい
0286nobodyさん2006/02/02(木) 11:09:31ID:???
>>285
PHP4なのでお腹いっぱいになりません…
0287nobodyさん2006/02/02(木) 13:28:02ID:???
>>285
しらなかった・・・
PHP5なのにxml_parse()使ってたorzorzorz
0288nobodyさん2006/02/02(木) 14:23:19ID:???
>>286
ttp://www.ister.org/code/simplexml44/index.xhtml
にPHP4用のSimpleXMLらしきものがあるので、試してみては?
0289nobodyさん2006/02/02(木) 14:36:37ID:???
>>288
へー。初めて知りました。
PEARのXMLを扱うやつと比較しながら
ちょっと試してみます。ありがとやん。
0290nobodyさん2006/02/09(木) 12:10:45ID:???
HTML_QuickFormのaddRuleでhiddenの値(one-time token)をvalidateしようとしています。

なぜか全く反応しません。
requiredにも無反応。raiseErrorにもひっかからない。

hiddenの値をvalidateするにはどうすればいいですか?
0291nobodyさん2006/02/09(木) 13:01:42ID:???
>>290
マルチ
0292nobodyさん2006/02/10(金) 05:41:05ID:???
>>290
呪文を唱える(マジ)
0293nobodyさん2006/02/10(金) 14:03:44ID:???
>>292
マジで呪文を唱えてみました

効果がありませんでした。
とりあえずソースにデバッグコードを埋め込んだりして、動きを追っています。
mojavi + HTML_QuickForm + smarty という構成なのでそのどこかにバグがあるのでは
と思っています。

今このあたりを調べ中…(3日もコーディングが進まない…)
$form->accept($QFrenderer);
0294nobodyさん2006/02/10(金) 19:31:43ID:???
>>293
>mojavi
だったら、根本的な解決にならんけど、

Acrionのinitialize()あたりでチェックする。
0295nobodyさん2006/02/11(土) 06:24:10ID:???
>>290
ソース出してみ
0296nobodyさん2006/02/11(土) 15:27:57ID:???
こんなのでも動かないよ
仕様じゃないかと思われるから要望だそうかと思うけど

$form->addElement('hidden', 'test', '');
$form->addRule('test', 'test is required', 'required', '');
0297nobodyさん2006/02/13(月) 22:58:45ID:pnT1I5vq
MDB2 SQLite リリースあげ
http://pear.php.net/package/MDB2_Driver_sqlite/
0298nobodyさん2006/02/14(火) 16:45:17ID:???
なんでPERLと似てんの?意識してんの?
0299nobodyさん2006/02/14(火) 20:28:20ID:???
SQLiteってそんな使ってる人多いの?
0300nobodyさん2006/02/14(火) 22:59:00ID:nEcRuD6a
SQLite ならデーモンの管理や権限の管理が要らないから
DB の使えるホスティングが増えるんじゃないかなーと
期待してる
0301nobodyさん2006/02/15(水) 07:32:02ID:???
PHP ではあんまり流行らないかもねぇ
まだ日本語ドキュメントがあんまりないし
0302nobodyさん2006/02/15(水) 08:08:14ID:???
仕事では使った事ないけど、遊びで使う時には便利だったな。@windows
DB周りの設定のようなロジックに関係無い部分に気を使う必要がないから、すぐに作り始められる。

3への移行時期あたりに本家のドキュメントを手当たり次第に訳してどっかにうpした記憶があるんだが、URLわかんね。
地道に検索すりゃ見つかるんじゃないかな。
つか、他のDBと比べた時に多少制限があるくらいで、そこさえ押さえておけばあんまり意識する必要がなかったような。
0303nobodyさん2006/02/15(水) 09:19:32ID:???
管理用のツールはこの辺
http://www.debianhelp.co.uk/sqliteweb.htm
0304nobodyさん2006/02/16(木) 08:01:48ID:???
http://rakuto.net
0305nobodyさん2006/02/18(土) 02:28:12ID:Fc1AYhHK
AuthをmacのMAMPで使ってみた。
http://pear.php.net/manual/ja/package.authentication.auth.intro.php
の一番上にある最もシンプルなスクリプト実行してみたが、認証できず5時間くらい格闘中。
MAMPではmysqlのポートが8889になってしまうので、$dsn = "mysql://ネーム:パスワード@tcp(localhost:8889)/データベース名"
としてみたが、いっこうに動かず。Authのバグかなこれ??

しかもphp5だとこのスクリプトは動かず、外人どももご立腹な様子。
http://pear.php.net/bugs/bug.php?id=4371
0306nobodyさん2006/02/20(月) 17:00:30ID:???
HTTP_Clientでproxy使いたいんですが、どうやればいいんでしょうか
0307nobodyさん2006/02/20(月) 17:31:46ID:vRXDRBjP
>>306
気のせいだよ
0308nobodyさん2006/02/20(月) 22:23:00ID:???
誤爆?
03093062006/02/24(金) 11:11:37ID:???
extendsしたクラスを作って、直接メンバのHTTP_RequestのsetProxyをするクラスを自作しました…
意外と簡単だった
0310nobodyさん2006/02/24(金) 17:52:14ID:???
HTTP_Client で new HTTP_Request してる所と HTTP_Request のコンストラクタをちゃんと読んでれば
継承したクラスを作らなくても済んだのに。
03113062006/02/27(月) 16:21:13ID:???
読みました。
出来ました。
ありがとうございました。
0312nobodyさん2006/03/06(月) 13:38:45ID:???
QuickFormのdateで月日の範囲指定をしたいのですが、
minYearみたいなオプションはないのでしょうか?
もしくは、それに変わるものみたいな・
0313nobodyさん2006/03/08(水) 17:54:45ID:???
HTML_QuickFormのfileってfreezeすると使えないんですか?
0314nobodyさん2006/03/08(水) 17:55:18ID:???
ageる
0315nobodyさん2006/03/08(水) 22:51:49ID:???
>313
デフォでは何も出ない。
自分で拡張するべし。
0316nobodyさん2006/03/08(水) 23:00:23ID:???
>>315
さんくす
考えてみます
0317nobodyさん2006/03/08(水) 23:06:37ID:???
PEARにHTMLパーサってありますか?
0318nobodyさん2006/03/09(木) 03:59:13ID:???
HTMLを読み込んでDOMを作るようなやつを望んでる?

PEARにはないけど、PECLにひとつあるみたいね。
html_parse
http://pecl.php.net/package/html_parse

特定のタグをの使用を制限したいとかの理由なら

tidy
http://pecl.php.net/package/tidy

SafeHTML
http://pixel-apes.com/safehtml/

なんてのがある。(どっちもPEARじゃないね)
0319nobodyさん2006/03/09(木) 15:06:39ID:???
PEAR::XML_HTMLSax
0320nobodyさん2006/03/12(日) 16:46:29ID:UjH0HOBY
こんな日本専用パッケージ通るのか?
http://pear.php.net/pepr/pepr-proposal-show.php?id=362
中身はたいしたことないけど、期待age
0321nobodyさん2006/03/12(日) 16:52:02ID:???
コメントで色々言われているけど、
そのコメント自体が結構参考になる。
0322nobodyさん2006/03/12(日) 20:13:55ID:???
>>320
imodeはギリギリOKだと思ったが、hatenaは日本のリポジトリに突っ込むべきかと。
(まあAmazonだって全世界サービスとは言えないか)

http://ns1.php.gr.jp/pipermail/phpug-admin/2005-December/001057.html
これまだなんかね。
0323nobodyさん2006/03/17(金) 00:04:48ID:???
livedoorはOKだからはてなもOKじゃないの?
0324nobodyさん2006/03/17(金) 01:36:33ID:???
つーか、承認されてるし。達成したという事実はすげーかと。
0325nobodyさん2006/03/28(火) 04:03:40ID:y/Gmg3I1
DB_DataObjectのjoinAdd()で、

LEFT JOIN hoge_table ON id = hoge_id AND code = hoge_code

のように、2つの要素をANDで指定できますか?
0326nobodyさん2006/03/28(火) 04:34:16ID:???
>>325
できない.

プライマリキーがひとつしかないテーブルにしか対応しないと思った方がいいと思う.
(これは joinAdd() に限らず DB_DataObject 全体にそんな傾向がある気がする)

普通の INNER JOIN なら whereAdd() を併用すると何とかなったりするんだけど,
LEFT JOIN は自分も前に頑張ったけどダメだった.
そして言い訳のようにマニュアルには「joinAdd() がややこしくなってきたら
生 SQL 食わせちゃった方がいいっすよ」とか書いてあるw
0327nobodyさん2006/03/28(火) 04:45:36ID:???
>>326
散々格闘した挙句、同じく生SQLで解決しちゃいました。
できそうでできないってのが曲者ですな。。
0328nobodyさん2006/03/28(火) 05:35:19ID:???
う。生SQLで解決と思ったのですが、別ライブラリとの連携の関係で、
これは解決策にはなりませんでした・・・。うーん。
0329nobodyさん2006/03/28(火) 06:35:46ID:???
生 SQL って DB_DataObject::query() 使ってる?
別ライブラリってのがどういうものかわからないけど,

> $t1 = DB_DataObject::factory('hoge');
> $t2 = DB_DataObject::factory('fuga');
> $t1->joinAdd($t2);
> $t1->find();
と
> $t1->query( "SELECT * FROM hoge INNER JOIN fuga ON ( hoge.id = fuga.id )" )
は同値.

前者が複数キーテーブルのせいで実行できなかったとして,
それを後者に置き換えてもそのライブラリの問題ってのが発生するなら,
そもそもその案件に DB_DataObject が使えないってことじゃないかって気がする.
0330nobodyさん2006/03/28(火) 12:02:04ID:???
>>329
query() 使ってます。
別ライブラリというのは PEAR Structures_DataGrid です。
これは、こちらが渡した DB_DataObject のオブジェクトを、
追加操作してFetchするため、こちらで生SQLを発行しちゃうと
残念ながら効果がなくなるようなんです。
0331nobodyさん2006/03/28(火) 13:22:07ID:???
あちゃあ.なるほど Structures_DataGrid か……

DataObject を継承したクラスを作って,
find() の時にオリジナルクエリを決め打ちで流すようにして,
Structures_DataGrid にはそいつを渡すってのはどうかな?

その場合は,Structures_DataGrid の _detectSourceType() を
get_parent_class() でなく is_a() を使うように変更したらさらに楽にいけるかも.
0332nobodyさん2006/03/28(火) 16:02:45ID:???
いやぁ、Structures_DataGrid に DB_DataObject を渡すのは、
Structures_DataGrid に適切なLimitをセットしてもらって、
データ取得件数を最適化してもらいたいからなんです。
だからオリジナルクエリを決め打ちで流すのは効果なさそうだと。
0333nobodyさん2006/03/28(火) 17:47:00ID:???
困難やねw

LEFT JOIN とかを適切に行なうビューを create view して
そのビュー用の DB_DataObject を作るってのはどないだ
0334nobodyさん2006/03/28(火) 19:15:53ID:???
>>333
なるほど〜 それならできそうな気がします。
0335nobodyさん2006/04/03(月) 15:39:54ID:mvo6jAJ1
PEAR::Pager で、

  http://sample.com?ID=1&pageID=1 → http://sample.com?ID=2&pageID=2

みたいにpageID以外の変数(ここでは ID)をページごとに変える方法ってありますか?
0336nobodyさん2006/04/03(月) 19:48:56ID:???
Pager に pageID 以外の変数を管理させたいってことだと違うかもしれないけど,
とりあえず extraVars オプションを使ってみてはいかが.
0337nobodyさん2006/04/06(木) 14:05:03ID:gNYW2zNb
>>335
とんくすです。extraVarsの解説してるサイトってあまりないんですよね。

value=1 みたいに静的な変数は付加できるけど、value=%dみたいなこと
ができないみたいで…。

0338nobodyさん2006/04/06(木) 14:06:54ID:???
>337
pageIDを使うのじゃだめなのか? 何がしたいんだか分からん。
0339nobodyさん2006/04/06(木) 14:28:24ID:???
>>337
なんで pageID 以外に同じ値を冗長に持たせたいのかわからん.
単に変数の名前を変えたいだけなら urlVar に 'ID' を指定.
あるいは extraVars で 'ID' の値として $_REQUEST['pageID'] を指定してやるとか.
挙動を変更したいなら Pager_* を継承したクラスを作ってそこでやるとか……
0340nobodyさん2006/04/07(金) 11:36:01ID:???
PEAEの日本語マニュアル的な物はないの?

HTML_QuickForm で 「denotes required field」って部分を日本語に置き換える方法って無いでしょうか?
マニュアルがあればこの辺も調べたいんですが・・
0341nobodyさん2006/04/07(金) 13:19:09ID:???
この辺は見たのかい?
[PHP-users 23103]QuickForm::addRule() requiredを使用したときに表示される"* denotes required field"を変更したい
ttp://ns1.php.gr.jp/pipermail/php-users/2004-August/023625.html
0342nobodyさん2006/04/07(金) 14:14:44ID:???
>>341
ありがとうございます!
http://pear.php.net/manual/en/package.html.html-quickform.html-quickform.setrequirednote.php
これですね。

$form->setRequiredNote('<font color=red>*</font>は必須項目です。');

って感じで出来ました。
0343nobodyさん2006/04/07(金) 14:17:39ID:???
「denotes required field」でぐぐると先頭だったのだが。。。
0344340,3422006/04/07(金) 14:32:22ID:???
ごもっとも・・ orz=3
0345nobodyさん2006/04/11(火) 18:36:04ID:???
アカウントに認証はありますが、アカウントの作成に関しては何か用意されているのでしょうか?
0346nobodyさん2006/04/14(金) 18:17:06ID:ztoDRCLM
以前wampp2を使っていて、
今はxamppを使っています。
pear config-show
をすると、ディレクトリの設定などがwampp2当時のままになっていました。
xampp側で再設定するにはどうすればいいのでしょうか?
0347nobodyさん2006/04/14(金) 18:26:29ID:STB/6fVF
>>346
たぶんパス通ってないだけだよ。
03483462006/04/14(金) 19:12:42ID:???
>>347
ありがとうございます。
古い環境変数を削除して、pathを通して、
再起動させたら、直りました。
batファイル内を見たら環境変数がなければ再設定しているようなので、
環境変数が邪魔していたようです。
0349nobodyさん2006/04/24(月) 01:19:24ID:???
ディレクトりの階層をwindowsのエクスプローラみたいに
したいんですけど、pearでそんな都合がいいもんないですかね?
0350nobodyさん2006/04/24(月) 01:26:53ID:???
DOMの勉強をしているんですけど、
$doc = new DOMDocument();
$doc->load('test.xml');

var_dump($doc);

これだと、オブジェクトのID返すだけなんですね。
$docがどんな状態かすぐに調べる方法ってありますか?
0351nobodyさん2006/04/24(月) 09:04:54ID:???
>>349
再帰glob
0352nobodyさん2006/04/25(火) 23:23:53ID:???
ファイルのアップロードをするためのライブラリってあります?
0353nobodyさん2006/04/25(火) 23:40:55ID:???
このぐらいは、まずは自分で探そうぜ>>352
http://pear.php.net/package/HTTP_Upload

HTTPでアップロードするんじゃないのなら、その条件を提示
0354nobodyさん2006/04/30(日) 01:25:55ID:TxzAQxO9
某レンタルサーバー(共有サーバー)で、HTTP_REQUESTを使用したかったんで、
PEARを手動インストールしています。
目的のHTTP_REQUESTは動いたのでいいんですが、
PEAR_infoが動きません。PEAR基本パッケージ?以外に何かインストールしないといけないんでしょうか?
0355nobodyさん2006/04/30(日) 10:12:45ID:TxzAQxO9
連カキコすません。
Console_Getoptが必要のようだったので、インストールしました。
で、結果は動きません。エラーログすら吐き出さない・・・。
PHP_info.phpにアクセスすると、しばらくたって白紙画面になります。
なにか、案などありませんでしょうか?
0356nobodyさん2006/04/30(日) 11:54:05ID:???
手動でモジュール入れたんだったら
そもそもPEAR_Info使ってもしょうがないんじゃね
手動で入れたやつは情報見れんよ確か
0357nobodyさん2006/04/30(日) 12:26:03ID:???
propelがわかりやすく開設されたサイトないか?
0358nobodyさん2006/04/30(日) 12:37:11ID:???
>>356
レスどもッス。
そうなんすか。手動だとPEAR_Info動かないんだ・・・。
確かに、PEAR_Infoなくても問題ないんですけど、動かないってのがまず気になったのと、
時間がたって、「あれ?なに入れてたっけ?」で確認できたら便利かなと。

必要なモジュールは入ってると思うんだけどなぁ・・・。
0359nobodyさん2006/04/30(日) 12:40:38ID:???
prototype.jsベースのajaxライブラリってない?(APIが、RoR互換)

サイボウズの奴見つけたんだけど、メンテしてないようで、prototype.jsが1.4.0だとエラー...
あとAPIが今イチ使いづらい。
0360nobodyさん2006/04/30(日) 12:50:03ID:???
>>358
それぞれのファイルでrequire_onceしてるのを辿っていけば良くね?
0361nobodyさん2006/04/30(日) 15:22:45ID:???
>>360
Console_Getoptは、その方法で必要ってのはわかったんですけど、
他に必要そうなものが見当たらないんですよね。
ログが出ればわかるんだろうけど、なんでログでないんだろ。
ログは、別のPHPで適当にエラー起こすとちゃんと出るのに・・・。
03623562006/04/30(日) 21:10:32ID:???
>>358
いや、手動で入れたPEAR_Infoが動かない、ってことじゃなくて
手動で入れたPEARモジュールのディレクトリ指定して
PEAR_Infoの一覧にその手動で入れたモジュール一覧って表示できたっけなあと
PEAR_InfoってPEARのパッケージマネージャが作成する
レジストリファイルを参照してどんなPEARモジュールが入ってるかを
表示してたような気がする、、、って書いてて自信なくなってきたや

ええと、手動で入れたモジュールが表示されるかどうかは別として
ただ白紙とか動かんってことは何かミスがあるかと思う
動くのは動くはず
03633592006/05/01(月) 04:52:20ID:???
symfonyのJavascriptHelperが使えそ。
スレ違い、すま
0364nobodyさん2006/05/01(月) 12:43:13ID:???
>>362
なるほど。いろいろいじってたら、時々エラーログが出たりする・・・。
ログは、
PHP Fatal error: Maximum execution time of 30 seconds exceeded in /home/httpd/vhosts/ドメイン名/httpdocs/PEAR/PEAR/Registry.php on line 161
で、Registry.phpでエラーが起こってるってことなんすね?
該当の場所は、
function hasWriteAccess()
{
if (!@file_exists($this->install_dir)) {
$dir = $this->install_dir;
while ($dir && $dir != '.') {
$dir = dirname($dir); // cd ..
if ($dir != '.' && @file_exists($dir)) {  ←ここが161行目
if (@is_writeable($dir)) {
return true;
} else {
return false;
}
}
}
return false;
}
return @is_writeable($this->install_dir);
}
ん〜どうしたもんかな・・・。
0365nobodyさん2006/05/01(月) 14:47:38ID:???
再度、連カキコすません。
PEAR_infoが動かない原因がわかったっぽい・・・。
Info.phpのソースを追っていてわかったのは、
共有サーバーなので、/usr/share/pearにアクセス権がないのが根本的な原因っぽいっす・・・orz
で、pear_info.phpのnew PEAR_Infoのときに、
new PEAR_Info("ローカルインストのPEARディレクトリのパス","????")
に変えてみたら、エラーログは出るようになりました。
で、PEAR_Infoの第2引数は、何を入れればいいんでしょ?
PEAR_Infoの中で、new PEAR_Configのときに必要な引数なんですが、
マニュアルによると、
string $user_file
file to read user-defined options from
なんだそうで。手動インストした場合、なんのパスになるんでしょうか?

0366nobodyさん2006/05/01(月) 23:14:35ID:???
なんでメモ帳にしてる奴がいるの?
0367nobodyさん2006/05/02(火) 12:40:26ID:???
2chなんて馬鹿でかいソーシャルネットワークメモ帳みたいなもんだろ
0368nobodyさん2006/05/03(水) 21:31:31ID:V5QcZDri
PEARのDB.phpを使って、以下のスクリプトを繰り返したいのだけど
どうすればいいですか?(sqlite)

while($row =& $result->fetchRow(DB_FETCHMODE_ASSOC)){
print $row[id];
}
ここに一文必要?
while($row =& $result->fetchRow(DB_FETCHMODE_ASSOC)){
print $row[id];
}
0369nobodyさん2006/05/03(水) 22:43:29ID:???
>>368
mysqliでしか試してないけど
while($row =& $result->fetchRow(DB_FETCHMODE_ASSOC)){
print $row[id];
}
$i=0;
while($row =& $result->fetchRow(DB_FETCHMODE_ASSOC, $i++)){
print $row[id];
}
0370nobodyさん2006/05/04(木) 02:46:46ID:q11ggjCH
>>369
できました。ありがとうございました。
0371nobodyさん2006/05/04(木) 13:15:32ID:???
HTML_QuickFormでのアップロードは今後推奨されないようなのですが、
HTML_QuickFormを使っている人はどのようにアップロードを実装したらよいですか?
0372nobodyさん2006/05/04(木) 15:40:50ID:???
>>371
個人的にはQFを捨てるのがいいと思うけど
QF使ってた時はFileエレメント継承して
自前で拡張Fileエレメントを実装してた
0373nobodyさん2006/05/04(木) 16:10:53ID:???
>>372
それ公開してもらえないですよね…?
0374nobodyさん2006/05/04(木) 19:09:05ID:???
>>371
枯れてるし、特にこだわりや不具合がなければそのまま使ってもいいんじゃない?
今後っていっても大幅な改良があるか分からんし
結構好きなパッケージだったんだけどな
0375nobodyさん2006/05/04(木) 19:44:11ID:???
>>373
公開するほどのもんでもないしさ
推奨されてないとはいえアップロード周りの処理自体は
QFのFileエレメントに元から実装されてるし
普通にFileエレメント使えばいいと思う
ただ元のままではfreezeできんから
そこは拡張したってだけで
03763712006/05/04(木) 20:53:39ID:???
推奨されていない理由ってセキュリティ的な問題ですか?

freezeできないと何が困るかわからないので…

QFの説明をあちこちで読んだのですがfreezeってなんですか?
0377nobodyさん2006/05/04(木) 20:58:07ID:???
動いたら撃つぞだっけ?
0378nobodyさん2006/05/04(木) 21:11:33ID:???
つまんね
0379nobodyさん2006/05/05(金) 03:45:29ID:???
>>372
371じゃないけどなぜQFを捨てた方がいいと思ってる??
他にいいのがあるなら知りたいと思って。

0380nobodyさん2006/05/05(金) 05:12:05ID:???
>>378
わからずに死んだ奴もいるんだから、それで片付けるなよ
0381nobodyさん2006/05/05(金) 10:40:02ID:???
>>376 >>380
>>377は俺じゃねえw
非推奨なのは将来的にサポートされないからだっけ
freezeは各エレメントのリクエストをhiddenで
埋め込んだ状態にする、確認画面とかで使う

>>379
うーん、多機能なだけに全部QFでやろうとすると
QFのコードがMVCの色んなとこに分散しちゃうような気がする
組み方が悪いだけかもしれないけど
チーム内全員がQFを熟知してるならいいけど
0の状態から完全になじむのには時間のかかるパッケージだと思う
0382nobodyさん2006/05/05(金) 16:48:20ID:???
>>381
なるほど。細かい説明サンクス。

確かに学習コストは意外にかかるな。
でもjavascriptを自動で吐いてくれる魅力には勝てないww

fileは、セキュリティ的に問題があるのかと想像していたのだが
そういう意味ではなかったのか。
■ このスレッドは過去ログ倉庫に格納されています