SAPI 支持

SAPI 支持

我已经好几个星期无法安装 pthreads 了。我将列出错误日志,然后列出我的配置选项。
这些是我收到的错误:
(Apache 错误日志)

apache2handler SAPI 在第 0 行的未知中不受 pthreads 支持

apachectl -V 输出

Server version: Apache/2.4.18 (Unix) Server built: Jan 10 2016 14:54:48 Server's Module Magic Number: 20120211:52 Server loaded: APR 1.4.8, APR-UTIL 1.5.2 Compiled using: APR 1.4.8, APR-UTIL 1.5.2 Architecture: 64-bit Server MPM: worker threaded: yes (fixed thread count) forked: yes (variable process count)

同时 PHP 错误日志:
(PHP 错误日志)
bin/php -m
PHP Warning: Module 'pthreads' already loaded in Unknown on line 0 [PHP Modules] Core date pcre pthreads Reflection SPL standard

没有其他ini文件加载extension=pthreads.so,所有这些错误仅当我将其包含extension=pthreads.sophp-cli.ini文件中时才会发生。

不带php-cli.ini文件时,php -m列出这些模块:bin/php -m
[PHP Modules] Core date pcre Reflection SPL standard

在此刻PHP 和 APACHE除了无法识别 pthreads 类外,其他都运行正常。

Apache 配置选项 ./configure \ --prefix=path/apache \ --exec-prefix=path/apache \ --with-pcre=path/apache/pcre \ --enable-module=so \ --with-mpm=worker

PHP 配置选项 ./configure \ --prefix=path \ --exec-prefix=path \ --with-apxs2=path/apache/bin/apxs \ --with-config-file-scan-dir=path/php/lib \ --with-config-file-path=path/php/lib \ --disable-all \ --enable-maintainer-zts \ --enable-pthreads=shared

答案1

因为,apache(PHP-CGI)一次又一次不支持 pthreads,只有 CLI 版本才支持

https://github.com/krakjoe/pthreads

SAPI 支持

pthreads v3 仅限于在 CLI 中操作:我花了很多年试图解释 Web 服务器中的线程根本没有意义,在对 pthreads 进行 1,111 次提交后,我意识到,我的建议并没有被重视。

因此,我提出这个建议是基于一个确定的事实:除了 CLI 之外,您无法在任何地方安全且合理地使用 pthreads。

感谢收听 ;)

答案2

到目前为止,我想您知道为什么会收到该错误。如果您想在 CLI 和 JUST CLI 中使用 pthreads(您知道为什么)而不在 apache 中加载它,您有两个选择。1- 使用 --enable-pthreads=shared 选项编译 php。为此,您应该在 /path/php/ext 中下载 pthreads 并删除配置文件,然后执行 ./buildconf --force 以构建干净的配置,最后 ./configure --enable-pthreads=shared 将正常工作。不要在 php.ini 中添加此扩展。2- 使用 phpize 编译 pthreads 源并使用 -d extension={path_to_pthreads.so} 运行任何 php 脚本。

相关内容