2017-08-09 38 views
0

私はApache2サーバによって提供されるPHP5アプリケーションを持っています。 PHPがスレッドセーフでない場合は利用できないmpm_workerモジュールを使用します。だから、私は適切なフラグでPHPをコンパイルしました。この出力は私のPHPインストールがスレッドセーフであることを確認します:スレッドセーフなlibapache2-mod-php5

$ php -i | grep Thread 
Thread Safety => enabled 

素晴らしい! ApacheとPHP間のリンクを作成するには、php5モジュール(a2enmod php5)を有効にします。使用するファイル(libphp5.so)はlibapache2-mod-php5パッケージでインストールされています。しかし、自分のページに、彼らは言う:

それはスレッドセーフコンパイルされていないとして、このパッケージには、ONLY、ApacheのpreforkのMPMで動作することに注意してください。

それは私のねじ切りApacheとスレッドセーフなPHPの間でスレッドセーフではありません libphp5.soいる立っていること?どういう意味したがって、mpm_workerを作成することはできません。

私はPHPで行ったように、このファイルをコンパイルして、スレッドセーフにしたいと考えました。私はそれについての話題を見つけませんでした。私は私の場合を助ける助言をしてうれしいです。

phpinfo()を見ると、バージョン(PHP 5.6.30-0 + deb8u1)がコンパイルしたバージョン(PHP 5.6.31)と一致していないことがわかります。そして、そのスレッドの安全性は無効と表示されます。それは別のPHPインストールを使用しているようです。現在インストールされているPHPパッケージは次のとおりです。

$ apt list --installed | grep php 
libapache2-mod-php5/oldstable,oldstable,now 5.6.30+dfsg-0+deb8u1 amd64 [installed] 
libphp5-embed/oldstable,oldstable,now 5.6.30+dfsg-0+deb8u1 amd64 [installed] 
php5-cli/oldstable,oldstable,now 5.6.30+dfsg-0+deb8u1 amd64 [installed,automatic] 
php5-common/oldstable,oldstable,now 5.6.30+dfsg-0+deb8u1 amd64 [installed,automatic] 
php5-fpm/oldstable,oldstable,now 5.6.30+dfsg-0+deb8u1 amd64 [installed] 
php5-json/oldstable,now 1.3.6-1 amd64 [installed,automatic] 
php5-mysql/oldstable,oldstable,now 5.6.30+dfsg-0+deb8u1 amd64 [installed] 
php5-readline/oldstable,oldstable,now 5.6.30+dfsg-0+deb8u1 amd64 [installed,automatic] 

答えて

0

状況をよく説明する他のスレッドがあります。たとえば、hereです。

合計: PHPに関してApacheを設定するには2通りの方法があります。

  1. スタンドアロンPHPを使用する。あなたは自分でそれを編集しました。 Apacheはそれに接続できます。マシン上の別のサーバーとして理解できます。
  2. Apacheに直接PHPを組み込みます。それはmod_phpです。これは、スレッドセーフではないスタンドアロンのPHPインストールです。

あなたの問題を解決するには、スタンドアロンPHPを使用するようにApacheを再設定します。それはより複雑ですが、ユースケースに応じていくつかのスピードを与えるかもしれません。

関連する問題