2015-09-26 49 views
3

在我的ubuntu上有一個apache2 web服務器。我需要安裝pthreads,所以我克隆了源代碼php7和pthreads從rep(複製到/ ext /)。 我安裝了所有的庫爲PHP,然後我跑Apache2,pthreads。致命錯誤。 pthreads不支持apache2handler SAPI

./buildconf 

./configure --prefix=/usr --with-config-file-path=/etc --enable-bcmath --enable-calendar --enable-cli --enable-debug --enable-dba --enable-exif --enable-ftp --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-pcntl --enable-shmop --enable-soap --enable-opcache --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-zip --enable-maintainer-zts --with-freetype-dir=/usr/local/opt/freetype --with-openssl --with-gd --with-gettext=/usr/local/opt/gettext --with-iconv-dir=/usr --with-icu-dir=/usr --with-mhash --with-jpeg-dir=/usr/local/opt/jpeg --with-kerberos=/usr --with-libedit --with-mhash --with-png-dir=/usr/local/opt/libpng --with-zlib=/usr --with-apxs2=/usr/bin/apxs --libexecdir=/usr/local/php7/7.0.0/libexec --with-bz2=/usr --enable-fpm --with-fpm-user=_www --with-fpm-group=_www --with-curl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mcrypt --enable-pthreads.

它`完成好,我執行 '使' 和 'make install的'。 後來我在控制檯執行下一命令:

sudo a2dismod php5 
sudo cp /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php7.conf 
sudo rm -rf /usr/bin/php && sudo ln -s /etc /usr/bin/php 
sudo service apache2 restart 

這樣我Apache2中PHP7,但它does`t啓動,並給日誌我:

PHP Fatal error: The apache2handler SAPI is not supported by pthreads in Unknown on line 0 PHP Fatal error: Unable to start pthreads module in Unknown on line 0 Unknown(0) : Fatal error - The apache2handler SAPI is not supported by pthreads Unknown(0) : Fatal error - Unable to start pthreads module

如果我配置PHP7沒有 - -enable-pthreads,它的工作原理。我執行了phpinfo()並得到了結果。

我該如何解決這個問題?

回答

9

並行線程V3禁止什麼,但CLI加載。

它從來沒有意義在Web服務器環境中創建線程,以響應客戶端。創建服務器創建的線程以外的線程會破壞穩定性和可伸縮性。

創建多線程應用程序內其他多線程,多進程應用,未做任何應用程序中正確認識和準備了其他的任何體面的方式,是一個可怕的想法;它不能可靠地工作,因此被禁用。

您必須保留多線程的命令行,它是安全和明智的。共享

大廈並行線程(--enable-並行線程=共享),只有在CLI加載它會解決你的問題。

+0

非常感謝!這是最有幫助的。 –

+0

你是什麼意思與「* ...並只加載它在CLI *」?我如何在CLI中加載它?當我運行php -m時,我沒有看到pthreads模塊加載。我錯過了什麼?好。我找到了答案:[../35201054/how-do-i-load-pthreads-extension-in-cli](http://stackoverflow.com/questions/35201054/how-do-i-load-pthreads-擴展在cli) –

+0

哇,我花了大概一天搞清楚如何用pthreads手動構建php7,並啓用它在Apache中只發現在最後 – thedeveloper3124