Apache2的,并行线程。致命错误。 pthreads

时间:2015-09-26 08:47:03

标签: php ubuntu pthreads apache2 php-7

我的ubuntu上有apache2 web服务器。我需要安装pthreads,所以我从rep(copy到/ ext /)克隆了php7和pthreads的源代码。 我为php安装了所有库,然后我运行了

./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'和'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

通过这种方式我用php7获得了apache2,但它确实没有启动并为我提供日志:

  

PHP致命错误:pthreads不支持apache2handler SAPI   in Unknown on line 0 PHP致命错误:无法启动pthreads模块   在第0行的未知中未知(0):致命错误 - apache2handler   pthreads不支持SAPI Unknown(0):致命错误 - 无法执行   启动pthreads模块

如果我在没有--enable-pthreads的情况下配置php7,它就可以了。我执行了phpinfo()并得到了结果。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:9)

pthreads v3禁止加载除CLI之外的任何内容。

为了响应客户端,在Web服务器上下文中创建线程从未有意义。创建除服务器创建的线程之外的线程,破坏稳定性和可伸缩性。

在其他多线程,多进程应用程序中创建多线程应用程序,没有任何正确的方法使应用程序正确识别并为另一方做好准备,这是一个可怕的想法;它无法可靠地工作,因此被禁用。

您必须为命令行保留多线程,这是安全且合理的。

构建pthreads shared(--enable-pthreads = shared),并仅在CLI中加载它将解决您的问题。