Home > Program > PHP

PHP Archive

[ symfony ] symfony 1.0 と 新しめのPEARの組み合わせで起きる、プラグインインストール時のエラー

エントリタイトルが糞長ぇ!

タイトルの通り、symfony 1.0と最近のバージョン(あやふやw)で起きる、symfony pluginインストール時のエラーです。
CentOS 5.3 i386/PEAR 1.9.0/symfony 1.0.22-PREの環境で発生。

symfonyプラグインのインストールでエラーがでた場合 | symfonyで開発Blog
同様の現象がこちらでも起きているんですが、こちらとちょっと違って前衛的な対処法です。
安全性は上記エントリのがバツグンにあるんで、上記のがオススメです。

プラグインインストール時のエラーは上記エントリと同様です。 一部パスを隠してます。

PHP Warning: require_once(PEAR/Remote.php): failed to open stream: No such file or directory in /usr/share/pear/symfony1.0/data/tasks/sfPakePlugins.php on line 155

Warning: require_once(PEAR/Remote.php): failed to open stream: No such file or directory in /usr/share/pear/symfony1.0/data/tasks/sfPakePlugins.php on line 155

PHP Fatal error: require_once(): Failed opening required ‘PEAR/Remote.php’ (include_path=’/var/www/documentroot/lib:/var/www/documentroot/apps//lib:
:/usr/share/pear/symfony1.0/lib/vendor:.:/usr/share/pear:/usr/share/php’)
in /usr/share/pear/symfony1.0/data/tasks/sfPakePlugins.php on line 155

Fatal error: require_once(): Failed opening required ‘PEAR/Remote.php’ (include_path=’/var/www/documentroot/lib:/var/www/documentroot/
apps//lib::/usr/share/pear/symfony1.0/lib/vendor:.:/usr/share/pear:/usr/share/php’)
in /usr/share/pear/symfony1.0/data/tasks/sfPakePlugins.php on line 155

要は、Remote.phpが見つからない、と。
で、上記エントリではRemote.phpが無いと書かれてますが、実はあるんです。 たぶん同じものが、
PEAR/Command/Remote.php
ここにありまする。
DIFF取ったわけじゃないけどたぶん同じです。

んで、Remote.phpは
/usr/share/pear/symfony1.0/data/tasks/sfPakePlugins.php
から呼び出されようとしています。

なのでこのファイルの155行目付近にある

require_once ‘PEAR/Remote.php’;

という行を

require_once ‘PEAR/Command/Remote.php’;

と書き換えるだけでもいけます。

symfonyのコアファイルに手を入れるのはちょっとあれなので、
/path/to/PEAR/Remote.php というシンボリックリンクを貼ってもよかと思います。 これでも通りました。

symfonyが悪いというわけではなく、PEARが易々とファイル構造を変えるのがイカンですな。
でもって追従出来てないsymfonyもちょっといかんー。

公式フォーラムにもこの件があるっちゃあるんですが・・・この有様だよ

Symfonyのactions.class.phpを分割する

記事に連続性がありませんね。 仕事中に見つけるTipsなのでご了承。

あと、今まで付けていたエントリータイトルの[ tag ]を外しましたよ。 これからも外します。
理由はWordpress側でタグ付けが出来るようになったからですな。 便利便利。

PHPフレームワークのSymfonyネタです。 今まで知らなかったので載せます。
symfonyのactionクラスは {root}/apps/{appname}/modules/{modname}/actions/ に actions.class.php という名前で保存されています。

http://hoge.com/{modname}/index にアクセスするには actions.class.phpに executeIndex() というメソッドを加えればOK.
というのは基本ですが、メソッドが増えることも多いはず。

DRYを気にせずに書いてしまうと100kb超えなんて目じゃないぜ!
と、目指したくもないので分けます。

Continue reading

[ PHP ] IRC Gatewayでも作ってみようか(調査)

PHPです。
CakePHP勉強会で触発されたわけではありませんYO!!

何かというと、PHP製IRC Gatewayですね。
Perlはplumを始めいろいろとありますし、Rubyはnadokaがある。 PHPないじゃん!
PHPerとしてIRCしてる以上、どうせなら自分でメンテもしやすいであろうPHP製がいいよ、たぶん。 楽しそうだし。

で、調べてみたこと。

  • PEARにNet_SmartIRCというIRC Botライブラリがある(これは前から知ってた、というか使ってる)。
  • 過去のバージョンにはircg(IRC Gateway)という関数もあった。
  • ※ この関数はPECLに移動したというマニュアル記事を見かけたが現在はないようである。 さらにircgは商用を視野にいれたものがあるようだが、事実上開発はストップ。 対応バージョンもPHP 4.2.x/4.3.xだけで、さらにいうとソースコードも未公開である。

    とりあえずこんだけ。
    「作ってみようか」になったのはircgが使い物にならないから至ったわけです、はい。 思いつきです。 そのうち頓挫するかもしれません。

    で、Gatewayなんて(当然ですが)作ったことがない。
    IRCの仕様すらよく知らない。 以前にRFC読んだことあるけど斜め読み。
    のでNet_SmartIRCのソースコードを読んでみる。 接続まででわかったこと。

  • PHPのsocket_*でソケットを張ったり切ったり。
  • コマンドを送るにはsocket_write()を使っているだけ。
  • どうもこれだけらしい。 やり方(IRCのネットワークまでの接続方法)さえわかれば誰でも作れますね、Net_SmartIRC.(いや、全部見てないけど、接続さえしてしまえばあとはたぶんコマンド投げるだけっしょ?)

    調べたここまでです。
    ここまでをまとめると、「無人Botは簡単」

    現時点で懸念してるのは、まずここまででログの取得やメンバーの取得なんかはできそうなことがわかったが、問題はIRC Server< -> Gatewayではなくて、Gateway< -> Clientです。
    どうやるんだー!? まったくわかりません。
    たぶんGatewayは、Clientから送られてきたコマンドをただIRC Serverに流すだけだと思うけど・・・合ってるかな。 まったく予想がつかない。
    そういえば、LimeChatには送受信コマンド一覧表示とかっていう機能があった気がしてきた。 あとで調べておこう。

    まぁ、フェイドアウト間違いなしですが追い込むためにPOSTしてみましたとさ。 今日はここまで。

    [ PHP ] events.php.gr.jp 第3回CakePHP勉強会

    今日の13時まではCakePHPかー どうしようかなーと思っていたんですが、IRCの場の空気に呑まれ(謎)参加することに。
    内容は次のとおり。

    第3回CakePHP勉強会 – events.php.gr.jp

    第3回CakePHP勉強会を開催します。

    CakePHPの活用事例やさまざまなネタで交流し、さらに広がるCakePHP界を盛り上げましょう。

    発表できるネタ、発表したいネタのある方はご連絡ください。ライトニングトークも予定していますので、短時間の発表でもOKです。

    ZendFrameworkとSymfonyは触ったことありますが、CakePHPは未経験。
    受け売りを読む限りではZFとSFの中間みたいなもんかー?という印象。 当日までに環境作成とHello Worldと気になるところくらいは触っておこうと思う。

    あ、その前にノートPCにOS入れないと・・・。

    [ PHP ] CentOS 4 x86_64 でのPHPインストール時のハマりどころ

    自分用メモも含みます。

    環境としてはWEB ARENAのVPS上です。
    CentOS 4, x86_64のようです。 64bit Linuxは/lib64なんてあるのでもうトラブルが起きないことはないってのが目に見えますが例に漏れず。
    PHPは5.2.5です。

    解決方法のその前に、私の環境でのconfigureオプションはこんな感じです。

    ./configure \
    –with-apxs2=/www/bin/apxs \
    –enable-pdo=shared \
    –with-pdo-sqlite=shared \
    –with-sqlite=shared \
    –with-mysql \
    –enable-mbstring \
    –enable-mbregex \
    –with-gd \
    –with-freetype-dir \
    –with-jpeg-dir \
    –with-png-dir \
    –with-zlib-dir \
    –enable-gd-native-ttf \
    –enable-gd-jis-conv \
    –enable-zip \
    –enable-exif \
    –with-tidy \

    では早速、ハマりどころ1
    –with-mysql
    です。 MySQLはyumでインストールしてあります。

    checking for MySQL UNIX socket location… /var/lib/mysql/mysql.sock
    configure: error: Cannot find libmysqlclient under /usr.
    Note that the MySQL client library is not bundled anymore!

    解決法はconfigureのオプションに –with-libdir=lib64 を加えるだけです。

    –with-libdir=lib64 \

    もちろん、これを加えることで発生するエラーももちろんあると思います。 が、それは割愛します。

    もう一点。 libtidy周りですね。
    これは珍しく(?)make install時にエラーが起きます。
    tidy自体はconfigureで–enable-sharedをつけています。
    ちと問題を再現出来なくなってしまったのでアレですが、対処法だけ。
    起きるエラーは確か、libtidy.soを触ろうとして「それはライブラリじゃありません」的な内容です。
    対処法は

    vi /etc/ld.so.conf

    で開いて

    /usr/local/lib

    を一行加えるだけです。

    64bit環境だと必ず起きる問題だと思うのですが、常識なのか、突っ込んだことをしていないのか。
    不思議。

    ホーム > Program > PHP

    Search
    Feeds
    Meta

    Return to page top