2017-08-09 49 views
0

我有一個由Apache2服務器提供服務的PHP5應用程序。我想使用mpm_worker模塊,如果PHP不是線程安全的,則該模塊不可用。所以,我用合適的標誌編譯了PHP。此輸出確認我的PHP安裝是線程安全的:線程安全的libapache2-mod-php5

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

太棒了!要創建Apache和PHP之間的鏈接,請激活php5模塊(a2enmod php5)。使用的文件(libphp5.so)由包libapache2-mod-php5安裝。然而,在他們的頁面上,他們說:

請注意,此包僅適用於Apache的prefork MPM,因爲它不是線程安全編譯的。

這是否意味着我的螺紋Apache和線程安全的PHP之間矗立libphp5.so這是不是線程安全的?因此使得mpm_worker不可用。

我想編譯這個文件,就像我用PHP做的那樣,使它成爲線程安全的。我沒有找到任何關於它的話題。我很樂意提供任何有助於我的案例的建議。

當我看着phpinfo()函數,我可以看到版本(PHP版本5.6.30-0 + deb8u1)不與一個我整理匹配(PHP 31年6月5日)。並且線程安全性顯示爲禁用。這就像它使用另一個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

總結: 有兩種方法可以配置你的Apache有關PHP。

  1. 使用獨立的PHP。你自己編譯。 Apache可以連接到那個。您可以將其理解爲您計算機上的另一臺服務器。
  2. 在您的apache中直接包含PHP。這是mod_php。這是一個獨立的PHP安裝,它不是線程安全的。

要解決您的問題重新配置Apache以使用您的獨立PHP。這是更復雜的,但可能會給你一些速度取決於你的用例。