Temukan apakah PHP yang diinstal aman untuk thread atau tidak?


91

Bagaimana cara mengetahui apakah versi PHP yang diinstal aman untuk thread atau tidak?

Harap dicatat bahwa saya tidak menanyakan perbedaan antara pemasangan threadsafe / non thread safe. Saya ingin mencari tahu apa yang terpasang saat ini.



1
@Haim Bukan itu pertanyaanku Haim. Saya melihat utas itu. Saya telah menginstal PHP di server ini. Ini bekerja dengan IIS. Tetapi, saya perlu mencari tahu pengaturan mana yang digunakan untuk menginstal ini ... Pengaturan threadsafe / pengaturan non-theadsafe?
Josh

Jawaban:


167

Buka phpinfo () dan cari keamanan Thread baris . Untuk membangun thread-safe, Anda harus menemukan enable .

Sebagaimana ditentukan dalam komentar oleh Muhammad Gelbana, Anda juga dapat menggunakan:

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

15
Di Windows: php -i|find "Thread"Aktif * nix:php -i|grep Thread
Muhammad Gelbana

7
Catatan untuk diri sendiri: php -i | find "Architecture"untuk memeriksa apakah itu x86 atau x64
checksum

@checksum ituphp -i | grep Architecture
helpse

22

Jika Anda lebih suka menggunakan baris perintah:

  • * nix:

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

    php -i | findstr -i "thread"
    

Ini akan memberi Anda sesuatu seperti ini:

Thread Safety => enabled

atau

Thread Safety => disabled

1
Bukan ide yang bagus, karena versi PHP yang digunakan oleh server bisa berbeda dari yang diambil oleh OS (default).
Buffalo

4

Buat file PHP baru dan masukkan kode ini di dalamnya:

<?php
phpinfo(); ?>

Kemudian jalankan halaman ini dan Anda akan menemukan semua informasi PHP. Cari istilah yang Anda inginkan, dan itu akan menunjukkan kepada Anda bahwa itu diaktifkan.


4

Saya hanya merasa lebih mudah untuk melihat file bernama php [versi] .dll di folder root php. Ini bisa berupa php [versi] .dll atau php [versi] ts.dll (ts singkatan dari Thread Safe). Jadi, jika Anda telah menginstal php7.0.10, buka direktori yang memiliki nama ini dan Anda akan menemukan file bernama php7ts.dll. Ini adalah cara yang sangat menyedihkan untuk mengetahuinya, tetapi berhasil!


4

Lalu ada ZEND_THREAD_SAFEkonstanta tak berdokumen , yang tampaknya ada sejak PHP 4.3.

<?php

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

https://3v4l.org/tALKX


2

Periksa apakah penginstalan Anda adalah Apache Module atau CGI Binary. Lihat pertanyaan Stack Overflow Apa itu thread safe atau non-thread safe di PHP? .


Bagaimana cara memeriksa itu? Tentu saja ini digunakan oleh IIS .. Tapi bagaimana cara mengetahui modul apa itu? Itulah pertanyaan saya ... Saya tidak bermaksud menanyakan perbedaan antara threadsafe / non thread safe. Saya perlu tahu apakah versi yang diinstal adalah thread safe / tidak
Josh

Ok saya baru menginvestigasi sedikit, dan ya ada 2 build yang tersedia; aman dan tidak aman. Menurut panduan penginstalan untuk IIS7, penginstalan non-thread-safe direkomendasikan. Bisakah Anda membuka phpinfo () dan melihat apakah kata 'utas' muncul di mana saja?
Phliplip

ya, phpinfo memiliki infonya di dalamnya ... Baru saja menemukannya ... Terima kasih @Philiplip
Josh

1

Dari skrip:

/**
 * @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()));
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.