如何确定安装的PHP版本是线程安全的还是线程安全的?
请注意,我不是在询问线程安全/非线程安全安装之间的区别。我想知道目前安装的是什么。
答案 0 :(得分:147)
打开phpinfo()并搜索线程安全行。对于线程安全的构建,您应该找到 enable 。
根据Muhammad Gelbana的评论中的说明,您也可以使用:
php -i|findstr "Thread"
php -i|grep Thread
答案 1 :(得分:20)
如果您更喜欢使用命令行:
* nix中:
php -i | grep -i "Thread"
视窗:
php -i | findstr -i "thread"
这应该给你这样的东西:
Thread Safety => enabled
或
Thread Safety => disabled
答案 2 :(得分:4)
创建一个新的PHP文件并在其中插入此代码:
<?php
phpinfo(); ?>
然后运行此页面,您将找到所有PHP信息。搜索您想要的术语,它会显示它已启用。
答案 3 :(得分:3)
我发现在php的根文件夹中查看名为php [version] .dll的文件更容易。它的php [版本] .dll或php [版本] ts.dll(ts代表线程安全)。因此,如果您安装了php7.0.10,请转到具有此名称的目录,然后您将找到名为php7ts.dll的文件。这是一种非常悲伤的发现方式,但它确实有效!
答案 4 :(得分:2)
然后是未记录的ZEND_THREAD_SAFE
常量,它似乎从PHP 4.3开始就存在。
<?php
if (ZEND_THREAD_SAFE) {
echo 'Thread safe';
} else {
echo 'Not thread safe';
}
答案 5 :(得分:1)
来自剧本:
/**
* @return boolean true if PHP is thread safe
*/
function isThreadSafe()
{
ob_start();
phpinfo(INFO_GENERAL);
return preg_match('/Thread\s*Safety\s*enabled/i', strip_tags(ob_get_clean()));
}
答案 6 :(得分:0)
检查您的安装是否为Apache Module或CGI Binary。请参阅Stack Overflow问题 What is thread safe or non-thread safe in PHP? 。
答案 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