查找所安装的PHP是线程安全的还是非线程安全的?
回答 7
浏览 5.5万
2011-04-27
怎样才能知道所安装的PHP版本是线程安全的还是不安全的呢?
请注意,我不是在问线程安全/非线程安全安装之间的区别。我想知道目前安装的是什么。
@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
在Windows上:
php -i|find "Thread"
在*nix上:php -i|grep Thread
- Muhammad Gelbana 2013-09-02
给自己的提示:
php -i | find "Architecture"
检查它是x86还是x64
- checksum 2015-03-07
@checksum 它是
php -i | grep Architecture
的
- helpse 2017-07-14
#2楼
得票数 24
如果你更喜欢使用命令行:
*nix:
php -i | grep -i "Thread"
Windows:
php -i | findstr -i "thread"
这应该会给你提供类似这样的东西:
Thread Safety => enabled
或
Thread Safety => disabled
这不是一个很好的主意,因为服务器使用的PHP版本可能与操作系统接收的版本(默认)不一样。
- Buffalo 2017-08-02
#3楼
得票数 8
我只是觉得查看php根目录下名为php[版本].dll的文件更容易。它要么是php[版本].dll,要么是php[版本]ts.dll(ts代表线程安全)。所以,如果你安装了php7.0.10,进入有这个名字的目录,你会发现一个名为php7ts.dll的文件。这是一个非常悲哀的发现方式,但它是有效的!
#4楼
得票数 5
然后是没有记录的ZEND_THREAD_SAFE
常数,似乎从PHP 4.3开始就存在了。
<?php
if (ZEND_THREAD_SAFE) {
echo 'Thread safe';
} else {
echo 'Not thread safe';
}
#5楼
得票数 4
创建一个新的PHP文件,并在其中插入这段代码:
<?php
phpinfo(); ?>
然后运行这个页面,你会发现所有的PHP信息。搜索你想要的术语,它将显示它的启用情况。
#6楼
得票数 2
检查你的安装是Apache Module还是CGI Binary。参见Stack Overflow问题什么是PHP中的线程安全或非线程安全?。
我怎样才能检查呢?当然,它是由IIS使用的,但我怎样才能知道它是什么模块?这就是我的问题......我不是想问线程安全/非线程安全之间的区别。我需要知道所安装的版本是否是线程安全的。
- Josh 2011-04-27
好吧,我刚刚调查了一下,是的,有2个构建可用;安全和非安全。根据这个IIS7的安装指南,推荐使用非线程安全的安装。你能不能打开一个phpinfo(),看看是否在任何地方出现了'thread'这个词?
- Phliplip 2011-04-27
是的,phpinfo里有这个信息......刚找到的......谢谢 @Philiplip
- Josh 2011-04-27
#7楼
得票数 0
另一种方法是使用php -v
或php --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