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.
php
iis
thread-safety
Josh
sumber
sumber
Jawaban:
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:
php -i|findstr "Thread"
php -i|grep Thread
sumber
php -i|find "Thread"
Aktif * nix:php -i|grep Thread
php -i | find "Architecture"
untuk memeriksa apakah itu x86 atau x64php -i | grep Architecture
Jika Anda lebih suka menggunakan baris perintah:
* nix:
Windows:
Ini akan memberi Anda sesuatu seperti ini:
atau
sumber
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.
sumber
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!
sumber
Lalu ada
ZEND_THREAD_SAFE
konstanta 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
sumber
Periksa apakah penginstalan Anda adalah Apache Module atau CGI Binary. Lihat pertanyaan Stack Overflow Apa itu thread safe atau non-thread safe di PHP? .
sumber
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())); }
sumber