堀田@長崎市です。
On Fri, 04 Mar 2005 15:28:49 +0900 (JST), ARAI Shun-ichi <arai@xxxxxxxxxxx> wrote:
Subject: [vine-users:070668] Re: php5-5.0.3-0vl1.src.rpm の問題
> > #ただし、configure のオプション(--enable-maintainer-zts)追加、
>
> と書きましたが、理由を書くのを忘れていました。申し訳ありません。
> apache2 と組み合わせて動かそうとすると、apache2 起動時に以下
> のようにエラーになります。
>
> # /etc/rc.d/init.d/apache2 start
> httpdを起動中: [Fri Mar 04 15:16:04 2005] [crit] Apache is
> running a threaded MPM, but your PHP Module is not compiled
> to be threadsafe. You need to recompile PHP.
> Pre-configuration failed
> [失敗]
>
> php5 の configure に --enable-maintainer-zts を追加したのは
> そのためでした。
> この php5 でとりあえず動いていますが、configure には
>
> --enable-maintainer-zts Enable thread safety - for code maintainers only
>
> と書いてあるのでちょっと不安です。それに、dl() も使えなくなりますし。
> Vine としてどうするべきかは私の判断するところではないと思いますが、
> php5 か apache2 のいずれかをどうにかすべきかも知れませんね。
どっかで聞いた話だと思っていたら、自分も過去に悩んだことがあり、
その回避策が README.vine (後述)に記載してありました(ぉぃ。
ただし、いつの頃からか(最初から?)README.vine をパッケージに同
梱するのを失念していたようです。次回の更新時につけるようにします。
《README.vine》
Vine 版の php5 RPM パッケージについて
2004.12.25
堀田 倫英 <hotta@net-newbie.com>
php5 の RPM パッケージ作成にあたっては、以下のポリシーに従っております。
1.PHP4 と並行でリリースするため、パッケージ名を php5 としています。
ただし PHP4 との共存が現時点では実現していないため、
Conflicts: php, php-*
しています。
2.バイナリ名称について
/usr/bin/php は CLI 版 です。CGI 版は提供しておりません。
3.拡張モジュールの設定
各 extension module (pgsql.so など) は、(--with-config-file-scan-dir
コンパイルオプションの指定により) /etc/php.d 配下に置かれた *.ini で
設定しています。
4.Apache への設定(httpd.conf)
以下のファイルに移しました:
/etc/httpd/conf.d/php5.conf for apache1
/etc/apache2/conf.d/php5.conf for apache2
5.apache2 について
Vine Linux 3.1 における apache2 MPM(Multi Processing Module)のデフォルトは
worker モデルになっていますが、php のモジュール版は prefork モデル でないと
正しく動作しないようです。
apache2 を prefork MPM に変更するには、以下のようにします。
# update-alternatives --config apache2
There are 4 alternatives which provide `apache2'.
Selection Alternative
-----------------------------------------------
*+ 1 /usr/sbin/apache2.worker
2 /usr/sbin/apache2.prefork
3 /usr/sbin/apache2.threadpool
4 /usr/sbin/apache2.perchild
Press enter to keep the default[*], or type selection number: 2
Using `/usr/sbin/apache2.prefork' to provide `apache2'.
その後、apache2 を(再)起動します。
# service apache2 restart
--
堀田 倫英 <hotta@xxxxxxxxxxxxxx>