查找所安装的PHP是线程安全的还是非线程安全的?

回答 7 浏览 5.5万 2011-04-27

怎样才能知道所安装的PHP版本是线程安全的还是不安全的呢?

请注意,我不是在问线程安全/非线程安全安装之间的区别。我想知道目前安装的是什么。

Josh 提问于2011-04-27
请看stackoverflow.com/questions/1623914/…中的答案。Haim Evgi 2011-04-27
@Haim 这不是我的问题,Haim。我看到了那个主题。我已经在这个服务器上安装了PHP。它与IIS一起工作。但是,我需要弄清楚是用哪种设置来安装的......线程安全设置/非线程安全设置?Josh 2011-04-27
7 个回答
#1楼 已采纳
得票数 200

打开phpinfo(),搜索Thread safety一行。对于一个线程安全的构建,你应该找到enable

正如Muhammad Gelbana的评论中所指定的那样,你也可以使用:

  • 在Windows上:php -i|findstr "Thread"
  • 在*nix上:php -i|grep Thread
grunk 提问于2011-04-27
Community 修改于2017-05-23
在Windows上:php -i|find "Thread" 在*nix上:php -i|grep ThreadMuhammad Gelbana 2013-09-02
给自己的提示:php -i | find "Architecture"检查它是x86还是x64checksum 2015-03-07
@checksum 它是php -i | grep Architecturehelpse 2017-07-14
#2楼
得票数 24

如果你更喜欢使用命令行:

  • *nix:

    php -i | grep -i "Thread"
    
  • Windows:

    php -i | findstr -i "thread"
    

这应该会给你提供类似这样的东西:

Thread Safety => enabled

Thread Safety => disabled
Matt 提问于2012-03-05
azjezz 修改于2018-08-20
这不是一个很好的主意,因为服务器使用的PHP版本可能与操作系统接收的版本(默认)不一样。Buffalo 2017-08-02
#3楼
得票数 8

我只是觉得查看php根目录下名为php[版本].dll的文件更容易。它要么是php[版本].dll,要么是php[版本]ts.dll(ts代表线程安全)。所以,如果你安装了php7.0.10,进入有这个名字的目录,你会发现一个名为php7ts.dll的文件。这是一个非常悲哀的发现方式,但它是有效的!

Flemin Adambukulam 提问于2017-04-12
#4楼
得票数 5

然后是没有记录的ZEND_THREAD_SAFE常数,似乎从PHP 4.3开始就存在了。

<?php

if (ZEND_THREAD_SAFE) {
    echo 'Thread safe';
} else {
    echo 'Not thread safe';
}

https://3v4l.org/tALKX

Shira 提问于2018-03-03
#5楼
得票数 4

创建一个新的PHP文件,并在其中插入这段代码:

<?php
phpinfo(); ?>

然后运行这个页面,你会发现所有的PHP信息。搜索你想要的术语,它将显示它的启用情况。

peroxide 提问于2011-04-27
Peter Mortensen 修改于2016-12-17
#6楼
得票数 2

检查你的安装是Apache Module还是CGI Binary。参见Stack Overflow问题什么是PHP中的线程安全或非线程安全?

Phliplip 提问于2011-04-27
Community 修改于2017-05-23
我怎样才能检查呢?当然,它是由IIS使用的,但我怎样才能知道它是什么模块?这就是我的问题......我不是想问线程安全/非线程安全之间的区别。我需要知道所安装的版本是否是线程安全的。Josh 2011-04-27
好吧,我刚刚调查了一下,是的,有2个构建可用;安全和非安全。根据这个IIS7的安装指南,推荐使用非线程安全的安装。你能不能打开一个phpinfo(),看看是否在任何地方出现了'thread'这个词?Phliplip 2011-04-27
是的,phpinfo里有这个信息......刚找到的......谢谢 @PhiliplipJosh 2011-04-27
#7楼
得票数 0

另一种方法是使用php -vphp --version来检查它。下面是我的例子(NTS):

    $ php --version
    
    PHP 7.3.25-1+ubuntu20.04.1+deb.sury.org+1 (cli) (built: Dec 26 2020 10:32:51) ( NTS )       
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.25, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.25-1+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
Julyano Felipe 提问于2021-01-26