Archive for the ‘PHP’ Category



28
4月

Vine5.x用のphp-5.3.2


PHP5.3.2がリリースされてたからずっとRPMのビルドに四苦八苦しておりましたが・・・

ようやく作ることができましたヽ(´ー`)ノ

いつもなら
1.php5-5.3.1-1vl5.src.rpmをダウンロードしてきてインストール

> rpm -ivh php5-5.3.1-1vl5.src.rpm


2.php-5.3.2.tar.bz2をダウンロードしてきてphp-5.3.1.tar.bz2と差し替え
> cd /usr/src/vine/SOUCES > wget http://jp2.php.net/get/php-5.3.2.tar.bz2/from/jp.php.net/mirror > rm -f php-5.3.1.tar.bz2


3.SPECファイルのバージョンを5.3.2に修正
> vi /usr/src/vine/SPECS/php53.spec


4.ビルド
> rpmbuild -ba --clean /usr/src/vine/SPECS/php53.spec


5.アップグレード
> rpm -Uvh php5-5.3.2-1vl5.i386.rpm ・・・

で完了なのですが、今回もビルドは一応完了するもののphp5-5.3.2-1vl5.i386.rpmに含まれる依存関係が1箇所おかしなことになるのです(´・ω・`)

> rpm -qpR php5-5.3.2-1vl5.i386.rpm alternatives php5-pear = 5.3.2-1vl5 rpmlib(VersionedDependencies) <= 3.0.3-1 /bin/sh /bin/sh /bin/sh rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 /usr/src/vine/BUILD/php-5.3.2/build-cgi/sapi/cli/php libbz2.so.1 ・ ・ ・

( ´゚д゚`)???

悩み続けること2日・・・どうやら最後に依存関係を勝手に追加してくださる”find-requires”が悪さしているというとこまではわかったのですが、これをどうやって正常な値(/usr/bin/php5)に修正すればよいのやら・・・

試行錯誤した結果、最終的にspecファイルに下記を追加してphp-5.3.2のrpmビルド用”find-requires”を作って正常な値に修正するという荒業で凌ぎました(゚Д゚)

--- php53.spec 2010-04-28 23:03:00.000000000 +0900 +++ php53.spec.org 2010-04-28 23:02:38.000000000 +0900 @@ -341,6 +341,10 @@ #========================== %prep +echo "%{__find_requires} | sed -e 's|${RPM_BUILD_DIR}/%{srcname}/build-cgi/sapi/cli/php|%{_bindir}/php5|g'" > %{_tmppath}/find-requires-php +chmod +x %{_tmppath}/find-requires-php +%define __find_requires %{_tmppath}/find-requires-php + %setup -q -n %{srcname} %patch33 -p1 -b .phpincludedir

↑は/var/tmpにfind-requires-phpを作って”find-requires”として認識させております。

find-requires-phpは単純に”find-requires”の結果から/usr/src/vine/BUILD/php-5.3.2/build-cgi/sapi/cli/phpを/usr/bin/php5に置換しているだけです。

結果以下のようにちゃんと修正されました

> rpm -qpR php5-5.3.2-1vl5.i386.rpm alternatives php5-pear = 5.3.2-1vl5 rpmlib(VersionedDependencies) <= 3.0.3-1 /bin/sh /bin/sh /bin/sh rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 /usr/bin/php5 libbz2.so.1 ・ ・ ・

よかったよかった・゚・(ノД`)・゚・

23
4月

PHP5.3.2がリリースされてた


というわけでVine5用のRPMをビルドしてみたのですが・・・

ビルドは完了するのですがなぜかアップグレードでコケる(´・ω・`)

CLIだけうまくコンパイルできていないっぽくてBUILDディレクトリにCLIがないよ!

的な意味不明なエラーがでるのです(´・ω・`)

う~ん・・・もうちょっと頑張ってみよう・・・

11
3月

シンプルなWEBベースのBTS「OpenTask」


会社で小規模なBTS(バグトラッキングシステム)が欲しいなぁと思いいろいろ探し回っていたところ「OpenTask」というBSTを見つけました。

早速ダウンロードして、設置してみた感じ、ところどころバグがあったりしてう~ん・・・という感じでした。

でも用途としてはこれが1番マッチしてるしシンプルで使いやすいのでこれで諦めるのはもったいない!!

ということで自力でバグをなおしたり、削除機能がないので削除機能を追加してみたりいろいろゴニョゴニョしてなんとか実用Lvに達してきました( ´ー`)

BSDライセンスらしいので、もしかしたら改造版を公開するかもしれません(=´ω`=)

12
10月

APC(Alternatice PHP Cache)を入れてみた(続き)


APC(Alternatice PHP Cache)を入れてみたの続きです。

ちゃんと統計をとってみたところ、何も入れない方が早いといういことが判明(´・ω・`)
やはり、suphpとの共存は無理のようです・・・
suphpは毎回php-cgiを呼び出しているから、その都度キャッシュが初期化されているんじゃないかと・・・・いう気がします。

今度はapacheのキャッシュ機能を使ってみようかな( ´ー`)

※追記
APCの効果が得られないのはこのブログだけだったみたいです。
たぶんDB周りが原因でキャッシュの恩恵を受けれてないもよう。

phpinfo();だけのページをabで計測したらちゃんと早くなってました( ´ー`)

たぶんXCacheも同じ理由のような気がします。

10
10月

APC(Alternatice PHP Cache)を入れてみた


xcacheを入れてみたであまり効果が体感できなかったので、今回はAPC(Alternatice PHP Cache)を入れてみました。

やはり体感ではあまり分かりませんでした・・・(´・ω・`)

という訳でapacheベンチ(ab)を利用して数値で調べてみたところ、何も無いよりは若干APCの方が早くなっていました(゚∀゚)

XCacheはなぜか何も無い状態よりも悪い結果になりました(やはりsuphpとの共存ができないのだろうか・・・)

ということで、APCの採用を決定!!( ´ー`)

Vine5.0で作ったRPM/SRC.RPM集にRPMとSRC.RPMをアップしましたので欲しい方はどうぞ(ご利用は自己責任で)

ついでにほとんどデフォで使っているMySQLのパフォーマンスチューニングも行いました。

my.cnfに以下を追加しました。

max_connections=200 thread_cache=200 query_cache_size=16M

結構早くなった気がします( ´ー`)

7
10月

xcacheを入れてみた


自宅のメインサーバー機の方もやっとVine5へのアップグレードが完了しました( ´ー`)

では次のステップ!ということで次はPHPの高速化をやってみようということで・・・

(※ウチのサーバーはsuphpを使っているのでPHPのパフォーマンスあまりよろしくないのです。)

まずはeAcceleratorを試してみようと思ったのですが、コンパイル途中(RPMの作成途中で)でエラーとなってしまったので断念(´・ω・`)

仕方ないので次にXCacheを試してみました。

こちらはコンパイル(RPMの作成)も完了しインストールも無事完了。

ちゃんとXCacheが機能しているのかがイマイチよく分からなかったので結局アンインストールしちゃいました( ゚Д゚)

(※そもそもsuphpとxcacheの共存でできるのか???)

つぎはAPCを試してみようと思う( ´ー`)

XCacheのRPMをアップしましたので欲しい方はVine5.0で作ったRPM/SRC.RPM集からどうぞ(要自己責任です)

あ、あと2009年9月のスパム対策統計をアップしました。

Postfix単体で99.95%
Postfix+Procmailで100%

でした。

3
10月

php5.3にアップグレード


RoundCubeやWordPressで問題があった為、php5.3へのアップグレードを躊躇していたのですが、

再チャレンジということで思い切ってアップグレードしてみました( ´ー`)

まずWordPressのwarningの問題はphp.iniで

date.timezone = "Asia/Tokyo"


を明示的に指定してあげれば良いというのは前々から調査済みだったので解決!

さてさて最大の問題であったRoundCubeの方ですが、
単純にphp5.3にアップグレードしただけだと例によってDEPRECATEDがいろいろ出ます。

以前調べた時にphp.iniに

error_reporting = E_ALL & ~E_DEPRECATED


としてあげればDEPRECATEDはでなくなるということは知っていたのでこれを設定(最初から設定されてた)

んが、これでもDEPRECATEDが出力されてしまう・・・。・゚・(ノд`)・゚・。

というところまでで前回は諦めました。

今回はまずRoundCube Webmail の日本語化様よりroundcubemail-0.3-stableを頂戴してきてRoundCubeそのものをアップグレード。

これでもDEPRECATEDは消えない・・・(´・ω・`)

次にじゃーなんで「E_ALL & ~E_DEPRECATED」を指定してもDEPRECATEDが出てしまうのかというところを調査。

結論としてsuPHPを使っていることが原因のようなのです┐(´д`)┌

RoundCubeは設置時に直下のディレクトリに.htaccessを作成しphp_flagやphp_valueを設定します。

ところがsuPHPは.htaccessのphp_valueを認識できません。

どうもこれがダメなんじゃないか???というところに行き着きついたのです。

じゃーどうすればよいか!ということですがこれは結構簡単でphpが動作しているディレクトリ配下に以下のような.htaccessを置いてphp.iniを認識させればよいのです。

suPHP_ConfigPath /path/public_html/RoundCube <Files php.ini> order allow,deny deny from all </Files>

※/path/public_html/RoundCube直下にphp.iniをコピーしてRoundCube設置時に.htaccessに指定してあったphp_value等をphp.iniに反映させます。

今度はDEPRECATEDが消えましたヽ(´ー`)ノ

とりあえずは問題なさそうですが、もう少し様子をみる必要はありそうです( ´ー`)

24
7月

WordPress2.8.2がリリースされてた


2.8.1からあまり日が経ってないのにリリースが早いなぁ~と思っていたのですが、どうやらXSSの脆弱性が見つかったっぽい?

それはそうと以前のことがあってPHP5.3にどのタイミングでアップグレードしようかいまだに悩んでいます・・・( ´ー`)

気合いを入れて自力で問題箇所を修正するかどうするか・・・

11
7月

php5.3にアップグレード→php5.2.10にダウングレード


メインサーバーと予備サーバーの両方にPHP5.3を適用してみたのですが、WordPressでWarningがでたり、RoundCubeでエラーがでて動かなかったりと何かと問題アリアリだったので結局もとの5.2.10に戻しました(´・ω・`)

メインサーバー(Vine4.2)の方は以前作ったRPMでアップグレード。(そしてダウングレード)

予備サーバー(CentOS5.3)の方はremi-testをリポジトリに追加してあるのでそちらからyumでアップグレード。(そしてダウングレード)

ちなみにCentOSのyumリポジトリにrpmforgeとremi、remi-testを追加する方法は以下のとおり

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm wget http://rpms.famillecollet.com/remi-enterprise.repo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi cd /etc/yum.repos.d/ vi CentOS-Base.repo [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&cc=jp #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/$basearch/ gpgcheck=1 #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5 priority=2 #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&cc=jp #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ baseurl=http://ftp.riken.jp/Linux/centos/$releasever/updates/$basearch/ gpgcheck=1 #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5 priority=2 #packages used/produced in the build but not released [addons] name=CentOS-$releasever - Addons mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons&cc=jp #baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/ baseurl=http://ftp.riken.jp/Linux/centos/$releasever/addons/$basearch/ gpgcheck=1 #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5 priority=2 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&cc=jp #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ baseurl=http://ftp.riken.jp/Linux/centos/$releasever/extras/$basearch/ gpgcheck=1 #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5 priority=2 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&cc=jp #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ baseurl=http://ftp.riken.jp/Linux/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-5 priority=3 vi rpmforge.repo [rpmforge] name = Red Hat Enterprise $releasever - RPMforge.net - dag #baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge #mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge enabled = 0 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag gpgcheck = 1 priority=1 vi remi-enterprise.repo [remi] name=Les RPM de remi pour Enterpise Linux $releasever - $basearch baseurl=http://rpms.famillecollet.com/el$releasever.$basearch/ # http://remi.collet.free.fr/rpms/el$releasever.$basearch/ enabled=0 gpgcheck=1 gpgkey=http://rpms.famillecollet.com/RPM-GPG-KEY-remi failovermethod=priority priority=1 [remi-test] name=Les RPM de remi en test pour Enterpise Linux $releasever - $basearch baseurl=http://rpms.famillecollet.com/test-el$releasever.$basearch/ # http://remi.collet.free.fr/rpms/test-el$releasever.$basearch/ # http://iut-info.univ-reims.fr/remirpms/test-el$releasever.$basearch/ enabled=0 gpgcheck=1 gpgkey=http://rpms.famillecollet.com/RPM-GPG-KEY-remi priority=1

使用する際は以下ようにオプションを追加

yum --enablerepo=remi,remi-test,rpmforge check-update
yum --enablerepo=remi,remi-test,rpmforge update

6
7月

php5.3.0 for vine4.2


ということでRPM、SRC.RPMを作ってみました。

http://cmf.ohtanz.com/download/vine4.2/php5/5.3.0/

※apache1.3系のモジュールは除外しております。

そして私はまだアップグレードしてません・・・(゚Д゚)

ご利用は自己責任でお願いします( ´ー`)

Celadon theme by the Themes Boutique