Find if the installed PHP is threadsafe or nonthreadsafe?
如何确定安装的PHP版本是否是线程安全的?
请注意,我不是在问线程安全/非线程安全安装之间的区别。我想知道目前安装的是什么。
打开phpinfo()并搜索行线程安全性。对于线程安全构建,您应该找到启用。
如穆罕默德·盖尔巴纳评论中所述,您还可以使用:
- 在Windows上:
php -i|findstr"Thread" - on*nix:
php -i|grep Thread 。
如果您喜欢使用命令行:
*NIX:
1php -i | grep -i"Thread"窗户:
1php -i | findstr -i"thread"
这应该给你这样的感觉:
1 | Thread Safety => enabled |
或
1 | Thread Safety => disabled |
创建一个新的PHP文件并将此代码插入其中:
1 2 |
然后运行这个页面,您将找到所有的PHP信息。搜索您想要的术语,它将显示它已启用。
我发现在PHP的根文件夹中查找名为php[version].dll的文件比较容易。它的php[version].dll或php[version]ts.dll(ts代表线程安全)。因此,如果安装了php7.0.10,请转到具有此名称的目录,然后找到一个名为php7ts.dll的文件。这是一个非常可悲的发现方式,但它起作用了!
然后是未记录的
1 2 3 4 5 6 7 | <?php if (ZEND_THREAD_SAFE) { echo 'Thread safe'; } else { echo 'Not thread safe'; } |
https://3v4l.org/talkx网站
从脚本:
1 2 3 4 5 6 7 8 9 | /** * @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())); } |
检查您的安装是Apache模块还是CGI二进制文件。请参阅堆栈溢出问题PHP中什么是线程安全的或非线程安全的?.