1read 100read
2011年10月1期WebProg【PHP】PEAR Part3 TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
PHPでOOP
まあ。ほとんどないとおもうが。。
【Python】TurboGearsスレ Part 1【Framework】
1がWebアプリを作るスレ


【PHP】PEAR Part3


1 :07/09/03 〜 最終レス :12/01/13
■PEAR
http://pear.php.net/
■PEAR マニュアル 邦訳
http://pear.php.net/manual/ja/
■PEAR オフィシャル blog
http://blog.pear.php.net/
■前スレ
【PHP】PEAR Part2
http://pc11.2ch.net/test/read.cgi/php/1122899232/
■過去スレ
Pear
http://pc8.2ch.net/test/read.cgi/php/985665522/

2 :
Pear2Pearを語るスレ

3 :
MDB_QueryToolで3つのテーブルをJOINしたいんだけど、
どうやったらいいのか分かりません。
表A
Id,a_name
1,name1
2,name2
表B
Id,b_name
1,name1
2,name2
表c
Id,c_name
1,name1
2,name2
A.id = B.id and A.id=C.id and B.id =C.idの条件で結合して
Id,a_name,b_name,c_name
が欲しいんだけど、どうやって3表をJOINしたらいいのか、
JOINの条件はどう指定したらいいのか分からないので、
教えてください。orz

4 :
select * from A natural join B natural join C
でどうかしら?

5 :
>>4
d。
でも可能な限りMDB_QueryToolでやってみたいのです。
SQLなら
select A.Id,A.a_name,B.b_name,C.c_name  from A,B,C
where A.id = B.id and A.id=C.id and B.id =C.id
でも良いと思うのです。
MDB_QueryToolじゃJOINの入れ子は無理かなぁ。
出来たとしても、インラインビューとかサブクエリの使えない
MySQL3.23では実行できない可能性も高いけど・・・orz

6 :
>>5
http://pear.php.net/manual/ja/package.database.mdb-querytool.api.php
ドキュメント見る限りsetJoinでテーブル名3つと条件まとめて指定か
addJoinでテーブルと条件をそれぞれ追加していけばいいんじゃないか?
QueryTool使ったことないのでなんとも言えないが

7 :
>>6
d
setJoin(Array('A','B','C'),'A.id = B.id and A.id=C.id and B.id =C.id');
とかやってみればいいのかな。
最初にsetJoin + addJoinでやってみたけど、
getQueryStringが戻ってこなかったんだよ。orz
とりあえず、QueryTool使わずに
目的の戻り値は得られたんだけど、
もうちょっと精進してみるわ。

8 :
sendmail_path 『/usr/sbin/sendmail -t -i』
$params['sendmail_path'] = "/usr/sbin/sendmail";
$params['sendmail_args'] = "-t -i";
$mail =& Mail::factory('sendmail', $params);
を行うと、PEARで下記のエラーが返ってきます。
Unable to find class for driver sendmail
サーバーではsendmailが使えるはずなのに、sendmailへのパスが見つからないということでしょうか?

9 :
解決しました。
原因はMailディレクトリをアップロードしていませんでした

10 :
テラアホス

11 :
query()とexecute()の違いが良く判りません
日本語マニュアルだとquery()は
>パラメータ $params を指定しており、クエリ内で プレースホルダを使用している場合に、 prepare() および execute() の代わりに使用されます。
とのことなんですが、execute()でもプレースホルダは使えますよね・・・
query()を使った方が性能がいいんでしょうか。

12 :
くだ質にいけよwww

13 :
>>11
DBはもう使うなMDB2使え
で、MDB2ではSELECTする時はquery、INSERT/UPDATE/DELETEする時はexecだ
データを要求して受け取るのかDB内部でデータ操作を行うのかの違いだ

14 :
ありがとうございます
MDB2の学習をしてみようと思います

15 :
こんにちは
追加インストールした二つのモジュールについて質問です。
-------------------------------------------------
  require_once "HTTP/Request.php";
  require_once "HTTP/Client.php";
-------------------------------------------------
Request.phpは読んでくれるのですが
Warning: main(HTTP/Client.php) [function.main]: failed to open stream: No such file or directory となります。
HTTPディレクトリには両方とも入っており(その下のクッキーマージャーも)正常だとは思うのですが…
.httには「php_value include_path ".:/home/ああああ/pear/PEAR"」と書いてあります
何かコンフィグを編集しないといけないのでしょうか?

16 :
include_pathの通ってるところにファイルが無いだけ

17 :
別のディレクトリに再インストールして
改めてパスを通したら動作しました。
どうしてRequestは動いてclientは見つけてくれなかったんだろう…

18 :
PEARのDB使うとクエリ実行のときに勝手にSQL分がエスケープされてるの?

19 :
>>18
日本語でOK

20 :
Spreadsheet_Excel_Writerで、日本語データをxlsで書き出すと、セル内の改行に♪が加わってしまうことがあります。
このような場合、一度セルを編集状態にすると♪が消えるのですが、この時フォント欄が文字化けしとります。
setFontFamilyの値は英語フォント前提のようなのですが、これって指定した方がいいですか?

21 :
         ____
      /  ─    ─\
    /    (●)  (●)\              どれ、そろそろ回答が…
    |      (__人__)    | .________
    \      `⌒´  ./ .| |          |
    ノ           \ | |          |
         ____  
      /::::::─三三─\                華麗にスルーー
    /:::::::: ( ○)三(○)\
    |::::::::::::::::::::(__人__)::::  | ________
     \:::::::::   |r┬-|  / | |          |
    ノ::::::::::::  `ー'´   \ | |          |

22 :
>>21
       ∧__∧
      ( ´・ω・)∧∧l||l
       /⌒ ,つ⌒ヽ )
       (___  (  __)  
"''"" "'゙''` '゙ ゙゚' ''' '' ''' ゚` ''"" "'

23 :
Spreadsheet_Excel_Writerって使い物になるのかな?
Readerの方は使えんね。
日本語入れてちょっと複雑にしたら
すぐに読めなくなる。
この間は途中のシートを削除したら
シート情報が正しく読み取れなくなった。
いったん、Exce95形式で保存したりして復旧させたが。
まあ使えんといいながら、開発ツールとして使ってはいるわけだが。

24 :
>>20
PHP Excel Creator Libraryがいいんじゃね?
http://pizzaseo.com/php-excel-creator-class
個人的にはExcel_Reviserがオススメだけど。

25 :
xoops界隈の開発者のソースに、何かを期待している方が間違っているってことが
まだ分からないのかw

26 :
WindowsのPHPだとネイティブにExcelを扱えなかったっけか。

27 :
/( ^o^ )\

28 :
>>26
COM使えばできる。

29 :
(○`O´○)カァーッ(○ ` .´○)ペッ

30 :
pearを使ってみたいのですが、どうすればインストールできるのかわかりません。
ネットにあるようにやってみましたが、自分が何か間違っている様で、動いてくれません。
MS-DOSでphp\pearと入力すると
PHP_PEAR_INSTALL_DIR is not set correctly
please fix it using your environment variable or modify the default value in pear.bat
the current value is:
となります。
注意する点としてPATHがどうのこうの書いてあったので、setで見てみると
PATH=C:WIN〜;C:\php
”PHP_PEAR_INSTAL_DIR=C:\php|pear”
"PHP_PEAR_BIN_DIR=C:\php"
"PHP_PEAR_PHP_BIN=C:\php\.\php.exe"
となっています。
何か問題があるでしょうか?また、他に確認しないといけない点はどこでしょうか?

31 :
PATHって、%PATH%とか入れといた方がいいんでないの?
ユーザ側の環境変数で追加する場合は。

32 :
msconfigでやってみようと思ったのですが、サイトに書かれていた状況と違ったので断念しました。
ただ、PATH=C:WIN〜に「;C:\php」しろって書いてあったのですが、setで見てみると既にあるっぽいので良いかと…
というか、書かれてた状況になってないのが既に問題なんですけどねw
でもどうやってもその通りにならないのです。ver.が違うからだとは思うのですが…

33 :
>>32
で、バージョンはいくつよ。
経験上、4.3以降ならgo-pear.bat実行した後、
出来たregファイルをダブルクリックして、
レジストリ登録すれば滅多なことはないはずだが。

34 :
>>33
出先から失礼します。php5 の初期ver.です。
go-pear.batに問題がある(今は新しいのになってるらしい)と書いてたサイトがあったので、
最初のパッケージに入っていたのと、新しいgo-pear.batを試しましたがダメでした。
regファイル実行するとOKみたいな表示は出るのですが…なりません。

35 :
HTTP_Request を使い始めたんですが、これってメモリリークしてませんか?

36 :
Pagerのリンクに出てくるindex.phpって消せないんですかね?

37 :
PEAR DBのプレースホルダに
?と|と&があるみたいなんだけど
|ってmysqlの生sqlでも意味ある文字でしょ?
まずくないの?

38 :
| じゃなくて ! じゃね?

39 :
PEARのパッケージにソースコードをハイライトしてhtmlに変換するものはないんですか?
欲しいもの
・PHPのソースコードをhtmlで読めるようにする。(例えば開始タグを<phpにする)
・ついでにソースコードに色をつける(例えば<span class="method">print</span>('hogehoge');)

40 :
PEARの前にマニュアル探そうぜ?
http://jp.php.net/manual/ja/function.show-source.php

41 :
>>35
そのままだと、読み込んだページを全部保持してるんだよ。
解除するオプションがあったはず。名前は自分で調べてくれ。

42 :
EventDispatcherてだれが使ってんだ?

43 :
>>39
手軽さなら>40だな
PEARにこだわるなら
http://pear.php.net/package/Text_Highlighter/
だな
性能の高さならGeshiだな
http://qbnz.com/highlighter/
上から順に生成HTMLが汚いかな

44 :
PEAR::DB使ってみたのだが、メモリリークが激しい・・・
使い方間違っているのか・・・

45 :
俺は何度でも書くぞ
PEAR DBはもうバグFIXしかされねてねーんだ
速くて便利で現在もアップデートされているMDB2使え

46 :
>>45
ちなみに今PEAR DB使ってる場合、
乗り換えって結構簡単?

47 :
少し見てみればいいのに

48 :
>>46
簡単だ、DB使ってるなら機能的には同じ機能がMDB2にもある
メソッド名が変わってるものは http://www.phpied.com/db-2-mdb2/ で対応がわかる
「DB MDB2 移行」あたりでぐぐれば他の情報も出てくるだろう
よっぽど変なことしてない限りは既存のソースの
名前を一括リプレースしていくだけでほぼ移行できるはずだ、
まあもちろんテストは必要だが

49 :
HTTP_Clientでhttpsにログインしたいんだけど、無理ですか?

50 :
>>49
--with-openssl で可能と思いますが。

51 :
PEARのMDB2+php4.4.7を利用してMySQL4.0.26(日本語に最適だと思って)に接続しています。
テーブルのカラム名にふんだんに日本語を利用しているのですが、
@php標準のmysql_field_name関数でカラム名を取得した場合
APEAR::MDB2のarray_keys($inQueryResult->getColumnNames())にて取得
(カラム名の取得方法が分からないので苦肉の策;)した場合
@だと正確に日本語を取得できるのですがAだと一部(だから厄介)日本語が化けますし、大文字の英字が小文字になります。
例:ユーザID → ユーブid
パスワード → パベワード
レコード → レビード
分かる方いらっしゃいましたら回避方法をお教えいただけますでしょうか。
また、まだ使い始めなのですがPEAR::MDB2はこういう症状は多いのでしょうか?

52 :
まず相談内容が文字化けしてる点ね。
パベワード
レビード
は、かわいいから許してやって。

53 :
>>51
カラム名にマルチバイト文字なんて使うなよ
どうしてもって言うならMDB2の場合
Reverseモジュールをloadしてtableinfoメソッドで取ってみるとか
ていうかカラム名にマルチバイト文字なんて使うなよ

54 :
> 分かる方いらっしゃいましたら回避方法をお教えいただけますでしょうか。
> また、まだ使い始めなのですがPEAR::MDB2はこういう症状は多いのでしょうか?
こんな事言ってるってことは、このデータベースをセットアップしたのは 51じゃないんじゃないか?
恐らくセットアップした本人がバックれて、尻拭いさせられてるんじゃw

55 :
52-54さん
回答ありがとうございます。
DBですが、先輩の引退につき、まったく部署や開発チームは違ったんですが
私が引き継ぐことになったものです。
PEAR自体は私の独断で使ってみようかなと思った次第です。
あれからも色々と調べたのですが、文字化け以前に53さんのおっしゃる
TableInfo()すらCallできずundefined methodやfunction on a non-object
も回避できない状態でしたので、自分にはまだクラスまわりの勉強が不足
していると判断しました;
納期の関係もあるので現在上手くいっているphp標準関数で取り合えずは
処理し、しかし気になるのでPEARは個人的に気長に追いかけるとします。
そしてやっと今から個人的なPEARを追う時間です。
$mdb2->loadModule('Manager');でManagerのロードには成功し、
listTables()などをCallできるのですが
$mdb2->loadModule('Reverse');でReverseのロードに失敗しているのか
分かりませんがTableInfo()がundefined methodとなってしまいます。
Managerがロードできているので環境や設定ファイルは大丈夫だと思うの
ですが、また、ディレクトリやそれぞれのmysql.phpと中身のメソッドは
存在するのですが、何が原因かどなたか分かりますでしょうか。

56 :
>>55
ManagerはロードできるのにReverseだけうまくいかないのかあ
とりあえずloadModuleは失敗してたらPEAR_Errorを返すから
$result = $mdb2->loadModule('Reverse');
if (PEAR::isError($result)) {
 echo $result->getMessage();
 exit();
}
してみてReverseのloadModuleが失敗してないか調べてみるとか

57 :
51=55です、55の補足です。
●Manager
$mdb2->loadModule('Manager');
$buff = $mdb2->manager->listTables();
var_dump($buff);
→成功(php4では「manager->」必須のようです
http://manual.jpnote.net/pear/package.database.mdb2.intro-manager-module.html)
「manager->」を除いた場合
buff = $mdb2->listTables();
→Call to undefined method: mdb2_driver_mysql->listtables() ・・・
●Reverse
$mdb2->loadModule('Reverse');
$buff = $mdb2->TableInfo();
var_dump($buff);
→Call to undefined method: mdb2_driver_mysql->tableinfo() in ・・・
「Reverse->」を足した場合
$buff = $mdb2->Reverse->TableInfo();
→Call to a member function on a non-object in ・・・
いまいちphpのエラー内容は解釈苦手なのですがReverseの2つのエラー
はどちらも解答に近づいていない気がします。

58 :
>>56さん
返信ありがとうございます、確認してみましたところとくに表示は出てきませんでした。
『Reverse モジュール (API) - スキーマのリバースエンジニアリングを
MDB2_Reverse_Common クラスで抽象化します。』
という記載がマニュアルにあったので
@スキーマを別途インストールして検証してみます。
また、どうにもMDB2+php4でそもそも動くのかというところから検証すべく
Aphp5+MDB2で検証してみます。
会社の環境は変更できないため自宅で環境を作ってからの検証
になりますので気長にやります。
他、なにかヒントになるような確認事項等ありましたらお願いします。
あと、回答遅くなりましたが日本語でのカラム名ですが、
たしかにおっしゃる通りです。私もこれまで思ってはいましたが実際挑戦する
ことになったのは今回が初です。
しかしながら、「もしも気兼ねなく日本語使えたら」という思いで頑張ります。
オープンソースの世界では無謀な挑戦かもしれませんが。

59 :
日本語でカラム名をつける発想は無かったわ。

60 :
pear つながらん
go-pear.org 自体がなくなってるって、あかんやろ!
んで、 http://pear.php.net/go-pear もつながらん!
PEARインストールできひんやんけボケ

61 :
PHP6でpearがコアに統合されたから役目が終わったんだろ

62 :
>>60 今調べたらアクセスできたよ。

63 :
「下らねぇ…」スレが荒れてますので、こちらで質問させてください。
特段の変更無く PHP をインストールした場合、pecl は勝手にインストールされるものですか?
それとも、設定の変更や、PHPとは別に後で追加する必要があるものですか?
(PHP 5.2.4、Apache/2.2.6、FreeBSD 6.2-RELEASE)

64 :
>>63
peclはインストールされません
http://jp.php.net/manual/ja/install.pecl.php

65 :
回答ありがとうございます。
リンク先のマニュアルは先日読んだのですが、イマイチ理解できませんでした。
ここで説明しているのは PECL 拡張モジュール のインストール方法ですよね?
pecl の実行プログラム(管理プログラム) のインストールはどうなのでしょうか?
「PECL は PHP 拡張モジュールのリポジトリで、 PEAR パッケージシステムを経由して使用可能です。」
とありますが、PEARを使って、PECL をインストールするという意味でしょうか?

66 :
【誤】 とありますが、PEARを使って、PECL をインストールするという意味でしょうか?
【正】 とありますが、PEARを使って、PECL の管理プログラムをインストールするという意味でしょうか?

67 :
イマイチ理解できませんでしたじゃなくて
自分の全能力をかけて理解しろ。

68 :
翻訳が下手なんだろ。
原文読んでみたら。

69 :
それだと英語は読めませんっていいそうだな

70 :
>>65
まずpeclコマンドがあるか調べる
$ which pecl
パスが出てくるなら入ってる、not foundなら入ってない
特段の変更無くインストールしたって言ってもソースから入れたのか
ディストリのパッケージシステムで入れたのかconfigureでも色々変わってくる
pearを入れたらpeclコマンドも付いて来たと思う
ソースからphpを入れてる場合、configureでpearインストールを
offにしてない限りはpearが入るので普通はpeclも入る
パッケージでphpを入れただけの場合はおそらくpearは入らない、
debianではphp-pearというpearのパッケージにpeclコマンドが同梱されている
俺はdebianを使っているのでBSDのportsが
どういうパッケージ構成かは知らないが
おそらくportsでも同じようにpearのパッケージに含まれてるんじゃないかと思う
なのでパッケージで管理してるならpearのパッケージを入れてやれば良い
基本的にこういうのはUnix/Linux周りの話だ
これという回答は環境によるのでこれくらいしか答えられん

71 :
俺はportsでpear入れるの嫌だなぁ。
pearがパッケージになってるのに、
それをさらにportsするってあんまり意味がない。

72 :
>>71はPEAR自体ではなく、PEAR内の様々なパッケージにおいて。

73 :
勘違いされてるとアレなので、
>>70でpearのパッケージと書いてるのは
「PEAR自体(PEARインストーラ)」のこと
あとそれが良い悪いの話じゃなく
あくまでpeclインストールにおける説明の話
>>71
もちろん俺も「PEARモジュールのパッケージ」はPEARで入れている
aptでPEARモジュールを入れたりはしないし俺も嫌だ

74 :
>>70
現時点で、pecl コマンドは存在しています。
そのコマンドがどの時点でインストールされたのかを把握したいのです。
サーバ管理者と pecl について認識の違いがありまして。
> ソースからphpを入れてる場合、configureでpearインストールを
> offにしてない限りはpearが入るので普通はpeclも入る
まさに知りたかった核心部分です。ありがとうございます。

75 :
> PHP5の仕様としてpecl(の管理プログラム)が導入されますが、
> peclの拡張モジュールを導入しなければ、
> 正常に動作することは御座いません。
というのは、正しいのでしょうか?

76 :
ローカルではPEARのインストールできたのですけど、レンサバではインストールできないってことはありますか?
ちなみに候補はロリポ、ハッスル、tok2です。

77 :
そんな高度なこと聞くな

78 :
レンサバによるんだろうが、最悪
ローカルでインストールしたPEARをフォルダごと、
レンサバに転送すれば使える

79 :
>>76
go-pearでインストールするのが楽だとおもう。
http://www.google.co.jp/search?hl=ja&q=go-pear.php&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=

80 :
>>76
共有ホストでの PEAR のローカルコピーのインストール
http://pear.php.net/manual/ja/installation.shared.php

81 :
携帯サイト用にKemp上でNet_UserAgent_Mobileを使ってるんですが
Fatal error: Call to a member function getModel() on a non-object in Net/UserAgent/Mobile.php on line 170
となってはまってしまってます。同じ症状なった方いますか?PHPは5.2.5です。

82 :
最近pearはじめました
$DB = NewADOConnection(_DB_TYPE);
$DB -> pconnect(_DB_HOST, _DB_USER, _DB_PASS, _DB_NAME);
$table = _DB_SALOON_KIHON_TB;
$sql="select * from ".$table." where uId = ".$_SESSION['uId'];
$sqlResult = $DB -> Execute($sql);
$obj = $sqlResult->fetchnextObject();
として、以下を実行しても値が取れないんだけどどこが問題ですか?(接続などはOKです)
echo $obj->Fields[loginPass];

83 :
print_r($obj->Fields);
の結果は?

84 :
>>83
ありがとう それの結果は戻ってきません
print_r($sqlResult); は配列?で大量に戻ってくるんですが…

85 :
解決しました 解決じゃないんだけど、
$obj->カラム名というやり方で目的は達成できたということで…
>>83 ありがとう

86 :
>>84
var_dump($obj);の結果は?

87 :
peclのid3を
pecl install id3
ってやって全部うまくいって入ったんだけど
入れた後はどうやったらその関数使えるようになるの?
インストールしたあとすぐにつかえるとおもって
<?php
print_r(id3_get_tag("test.mp3"));
?>
ってファイル作ってもなにも動作しないや・・・
なんか設定必要?
一応アパッチの再起動かけたけど駄目だった

88 :
>>87
php.ini に直接か php.d/id3.iniを作って
extension=id3.so //id3.soであってるかどうかは知らん。
と書かなきゃいけないんじゃね。
その後、apache再起動。
もしくはdl()でロードするとか。

89 :
>>88
php.iniに
extension_dir = "/usr/lib/php/modules"
って書いてあって
/usr/lib/php/modulesには
id3.soが入ってるからいいかなぁって、おもったけど

90 :
>>88さんのとおりやったらできた
ありがとうございます

91 :
いや、そこは ttp://jp.php.net/manual/ja/install.pecl.php を見て、
extension_dirと extensionの違いが分かりました、とかそういう自己レスが欲しいところかと・・・

92 :
>>91
それはphp.iniに書いてある
; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
; extension_dir directive above.
って所読んだら
extension_dirはモジュールファイルが置いてある場所の指定だけで
extension=ext.soを使って動的に読む込むという風に自己解釈して終わらせちゃいました。
すみません リンクを読んで勉強したいと思います

93 :
どうでもいいことなんだけど、いちいち言い訳をしないと前に進まない奴なんだな。
まぁ、言い訳ばっかりして、ちーとも前に進まない輩も多いのでまだマシなだけどな。
おまけに2ちゃんねるで鵜呑みにするのも危ないが... まぁがんばれ。

94 :
どうでもいいことなんだけど、謝ることより他に言うべきもっと大事なことがあるだろうと・・・

95 :
pear.php.net 死んでる?

96 :
死んでる。Webも見れんし、インストールもできん。日曜プログラマの俺涙目・・・

97 :
復活!

98 :
お色直ししてました。
pearコマンド(接続先も)も変わったので、使っている方はご注意あれ。

99 :
ふざけんなよ

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
PHPでOOP
まあ。ほとんどないとおもうが。。
【Python】TurboGearsスレ Part 1【Framework】
1がWebアプリを作るスレ