为什么当我从源代码构建 PHP7 时,我的编译指令被忽略了



我一直在使用 remi 存储库中可用于 Fedora 23 的 PHP7 版本,并且运行良好。我最近发现我需要从源代码编译 PHP7 才能让 Pthreads 工作,这也需要使用选项编译 PHP:--enable-maintainer-zts。不过,我发现,无论我使用什么选项来编译 PHP,当操作系统运行 PHP 时,它们都不会被使用。 如果我在终端中使用 php -i,我会看到线程安全已关闭,并且未列出我设置的其他选项。我确实卸载了 PHP 的 remi 版本,但这没有任何区别 - 然而,这导致了一个奇怪的情况,因为在我从我的机器中删除 PHP 的 remi 版本后,PHP 仍然通过 PHP-FPM 运行。在我看来,这意味着我正在运行我从源代码构建的 PHP7 版本,但我的指令被忽略了。如果不是这种情况,那么我不知道这怎么可能,除了当我运行 DNF 删除 PHP 时可能实际上并没有从我的机器中删除 PHP(同时我从源代码安装的版本被忽略或错误安装)。

我使用了几个不同的构建命令,最后一个是:

./configure --prefix=/usr/local/php --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-mysqli --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=nginx --with-fpm-group=nginx --with-libdir=/usr/lib64/php-zts --enable-ftp --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm --enable-maintainer-zts --enable-debug

当我检查 PHP 的各种文件的时间戳时,到目前为止,大多数文件都与我从源代码构建 PHP 的日期/时间不匹配。

有没有人知道我在这里错过了什么?

不需要构建,remi(或 Fedora)仓库中的包有 ZTS build 和 pthreads 扩展,需要使用 zts-php 命令(pthreads 扩展仅限 CLI)

# yum --enablerepo=remi-php70 install php-pecl-pthreads
...
# zts-php -m | grep thread
pthreads

您可以在 remi 存储库中检查 PECL 扩展 RPM 状态(显示 pthreads 可用)

最新更新