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.

Josh
sumber
1
lihat jawabannya di stackoverflow.com/questions/1623914/…
Haim Evgi
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
grunk
sumber
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
Matt
sumber
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.

peroksida
sumber
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!

Flemin Adambukulam
sumber
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

ShiraNai7
sumber
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? .

Phliplip
sumber
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()));
}
Elvis Ciotti
sumber