Drowsy Dog's Diary

any note, any thought

2014年1月8日
by kazoo
0 comments

[php] HTTP POST のレスポンスをストリームとして扱う

※ PHPさっぱりわからん人のメモですゆえ注意。

pear の HTTP_Request2 を使って POST して、 Response body に Base64 されたバイナリデータをこんな感じに受け取っていたのだけど、

あるときこのレスポンスが数百MB になって、Response.php の中でメモリ不足で落ちるように。

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 131334946 bytes) in /usr/lib/php/pear/HTTP/Request2/Response.php on line 364

ほんで、これストリームとして扱うのはどうするんじゃろ、と調べた結果。
HTTP_Request2 のままでは無理そうな感じ。
ファイルに落とすのは stream_copy_to_stream がラクそうだった。
いろいろ自信はない。

参考:
http://stackoverflow.com/questions/20440269/how-to-get-an-http-response-as-a-stream-in-php
http://stackoverflow.com/questions/19589154/php-stream-get-all-http-request-headers

2013年3月14日
by kazoo
0 comments

wordpressカテゴリページに画像が表示されない

テーマ yoko でのお話です。

カテゴリページ、アーカイブページ、検索結果のページでは excerpt(抜粋)表示になっていて、画像が表示されていませんでした。それ photo カテゴリとか意味ないですやん。デフォルトではこういう動作のテーマの方が多いのかな?

軽くぐぐって見ると、TwentyTen のころはデフォルトテーマもそういう動作をしていたようで、loop.php を修正しろとの記事が見つかる。なるほど。
yoko で同じような分岐を探してみる。と、あった。

ので、上記のように is_archive() の条件をコメントアウトして、検索結果だけを excerpt するようにして、解決。

ちなみに、twentytwelveだと、

と、いう感じの表記なので、やっぱりすでにデフォルトテーマでは検索結果画面のみ、excerpt 表示するようにしてるのかな(動作は未確認)。

2013年2月6日
by kazoo
0 comments

CentOS5.8 + PHP5.3 w/ php-process

CentOS/RHEL 5.x + PHP5.3.x で、sem_get() だの shm_get_var() だのを動かさないといけなくなったお話。

結論から言うと、一度 php/php53 をアンインストールして、webtatic の yumレポジトリを使って php-process をインストールしてやるとよい。

http://www.webtatic.com/projects/yum-repository/

 

で、

 

以下蛇足ですが、ここに至るにえっらい苦労したのでメモしておきます。
同じところにハマりませぬよう。

 

某システムのサーバサイドPHPで使われている sem_get(), shm_get_var() といった SystemV セマフォ及び共有メモリアクセスのシステムコールのラッパーは、PHP5.3 から非推奨になっており、デフォルトのコンフィグレーションでは disable されている。
http://php.net/manual/ja/function.sem-get.php

http://php.net/manual/en/function.shm-get-var.php

 

(ちなみにposix正規表現関係も非推奨になっており、split() とかも怒られます)

http://www.php.net/manual/ja/reference.pcre.pattern.posix.php

 

これらを enable してPHPをソースからビルドすれば良いのですがなかなか面倒。。

 

で、PHP の上記 posix システムコール実装は、5.1の頃は php-posix というモジュールで提供されていたようなのですが、5.3 からは php53-process というパッケージに入っているらしい。

じゃあこれを入れれば良いんじゃ?と思ったら、不思議な依存関係をしており、

 

php or php53

↑依存

php-common

↑↓コンフクリト

php53-common

↑依存

php53-process

 

つまり、PHPのいずれのバージョンを入れようとしても、php-common が必要で、
これがあると php53-common がコンフリクトして入れられない。なので php53-process もダメといった状態になっており、
epel や remi などのメジャーな repo で取得できるパッケージではこれが解決しない。なんでやねん。

 

でで、これを綺麗に解決した上で php-process をインクルードした PHP5.3.10 を提供してくれるのが、

冒頭の Webtatic の repo になるようです。webtatic.com すてき!