ตรวจสอบว่า PHP ที่ติดตั้งเป็นเธรดปลอดภัยหรือไม่ปลอดภัย?


91

ฉันจะทราบได้อย่างไรว่า PHP เวอร์ชันที่ติดตั้งนั้นปลอดภัยสำหรับเธรดหรือไม่เธรดปลอดภัย

โปรดทราบว่าฉันไม่ได้ถามความแตกต่างระหว่างการติดตั้งเธรดที่ปลอดภัย / ไม่ใช่เธรดที่ปลอดภัย ฉันต้องการทราบสิ่งที่ติดตั้งอยู่ในขณะนี้


1
ดูคำตอบในstackoverflow.com/questions/1623914/…
Haim Evgi

1
@Haim นั่นไม่ใช่คำถามของฉัน Haim ผมเห็นกระทู้นั้น ฉันติดตั้ง PHP บนเซิร์ฟเวอร์นี้แล้ว ทำงานร่วมกับ IIS แต่ฉันต้องหาว่าการตั้งค่าใดที่ใช้ในการติดตั้ง ... การตั้งค่า Threadsafe / การตั้งค่าที่ไม่ปลอดภัย?
Josh

คำตอบ:


167

เปิด phpinfo () และค้นหาบรรทัดด้านความปลอดภัยของกระทู้ สำหรับการสร้างด้ายปลอดภัยคุณควรจะหาเปิดใช้งาน

ตามที่ระบุไว้ในความคิดเห็นของMuhammad Gelbanaคุณยังสามารถใช้:

  • บน Windows: php -i|findstr "Thread"
  • บน * nix: php -i|grep Thread

15
บน Windows: php -i|find "Thread"บน * nix:php -i|grep Thread
Muhammad Gelbana

7
หมายเหตุถึงตนเอง: php -i | find "Architecture"เพื่อตรวจสอบว่าเป็น x86 หรือ x64
ตรวจสอบ

@checksum it'sphp -i | grep Architecture
helpse

22

หากคุณต้องการใช้บรรทัดคำสั่ง:

  • *ห้าม:

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

    php -i | findstr -i "thread"
    

สิ่งนี้ควรให้สิ่งนี้แก่คุณ:

Thread Safety => enabled

หรือ

Thread Safety => disabled

1
ไม่ใช่ความคิดที่ดีมากเนื่องจากเวอร์ชัน PHP ที่เซิร์ฟเวอร์ใช้อาจแตกต่างจากเวอร์ชันที่ระบบปฏิบัติการเลือก (ค่าเริ่มต้น)
ควาย

4

สร้างไฟล์ PHP ใหม่และใส่รหัสนี้:

<?php
phpinfo(); ?>

จากนั้นเรียกใช้หน้านี้และคุณจะพบข้อมูล PHP ทั้งหมด ค้นหาคำที่คุณต้องการและจะแสดงว่าเปิดใช้งาน


4

ฉันพบว่ามันง่ายกว่าที่จะดูไฟล์ชื่อ php [version] .dll ในโฟลเดอร์รากของ php เป็นทั้ง php [version] .dll หรือ php [version] ts.dll (TS สำหรับ Thread Safe) ดังนั้นหากคุณติดตั้ง php7.0.10 ให้ไปที่ไดเร็กทอรีที่มีชื่อนี้แล้วคุณจะพบไฟล์ชื่อ php7ts.dll นี่เป็นวิธีที่น่าเศร้ามากในการค้นหา แต่ได้ผล!


4

จากนั้นก็มีZEND_THREAD_SAFEค่าคงที่ที่ไม่มีเอกสารซึ่งดูเหมือนว่าจะมีอยู่ตั้งแต่ PHP 4.3

<?php

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

https://3v4l.org/tALKX


2

ตรวจสอบว่าการติดตั้งของคุณเป็น Apache Module หรือ CGI Binary ดูคำถาม Stack Overflow เธรดปลอดภัยหรือไม่เธรดปลอดภัยใน PHP คืออะไร .


จะตรวจสอบได้อย่างไร? แน่นอนว่ามันถูกใช้โดย IIS .. แต่ฉันจะรู้ได้อย่างไรว่ามันคือโมดูลอะไร? นั่นคือคำถามของฉัน ... ฉันไม่ได้ตั้งใจจะถามความแตกต่างระหว่างเธรดปลอดภัย / ไม่ใช่เธรดปลอดภัย ฉันต้องการทราบว่าเวอร์ชันที่ติดตั้งนั้นปลอดภัยหรือไม่
Josh

ตกลงฉันเพิ่งตรวจสอบเล็กน้อยและใช่มี2 รุ่นที่พร้อมใช้งาน ปลอดภัยและไม่ปลอดภัย ตามคู่มือการติดตั้งสำหรับการติดตั้งแบบไม่ใช้เธรดIIS7นี้แนะนำ คุณช่วยเปิด phpinfo () และดูได้ไหมว่าคำว่า 'thread' ปรากฏขึ้นที่ใด
Phliplip

ใช่ phpinfo มีข้อมูลอยู่ ... เพิ่งค้นพบ ... ขอบคุณ @Philiplip
Josh

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()));
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.