Drowsy Dog's Diary

any note, any thought

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

| 0 comments

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 すてき!

 


Author: kazoo

犬はさよならを言わないのだ。

コメントを残す

Required fields are marked *.