Jak sprawdzić, czy zainstalowana wersja PHP jest wątkowo bezpieczna, czy nie?
Zwróć uwagę, że nie pytam o różnicę między instalacją bezpieczną dla wątków / bez wątku. Chciałbym się dowiedzieć, co jest aktualnie zainstalowane.
Jak sprawdzić, czy zainstalowana wersja PHP jest wątkowo bezpieczna, czy nie?
Zwróć uwagę, że nie pytam o różnicę między instalacją bezpieczną dla wątków / bez wątku. Chciałbym się dowiedzieć, co jest aktualnie zainstalowane.
Odpowiedzi:
Otwórz phpinfo () i wyszukaj wiersz Bezpieczeństwo wątków . Aby uzyskać bezpieczną wątkowo kompilację, należy znaleźć opcję enable .
Jak określono w komentarzach Muhammada Gelbany , możesz również użyć:
php -i|findstr "Thread"
php -i|grep Thread
php -i|find "Thread"
On * nix:php -i|grep Thread
php -i | find "Architecture"
aby sprawdzić, czy jest to x86 czy x64
php -i | grep Architecture
Jeśli wolisz używać wiersza poleceń:
*nic:
php -i | grep -i "Thread"
Okna:
php -i | findstr -i "thread"
To powinno dać ci coś takiego:
Thread Safety => enabled
lub
Thread Safety => disabled
Po prostu łatwiej mi przyjrzeć się plikowi o nazwie php [wersja] .dll w głównym folderze php. Jest to php [wersja] .dll lub php [wersja] ts.dll (ts oznacza Thread Safe). Tak więc, jeśli masz zainstalowane php7.0.10, przejdź do katalogu o tej nazwie, a znajdziesz plik o nazwie php7ts.dll. To bardzo smutny sposób na sprawdzenie tego, ale działa!
Jest też nieudokumentowana ZEND_THREAD_SAFE
stała, która wydaje się istnieć od PHP 4.3.
<?php
if (ZEND_THREAD_SAFE) {
echo 'Thread safe';
} else {
echo 'Not thread safe';
}
Sprawdź, czy Twoja instalacja to Apache Module czy CGI Binary. Zobacz pytanie dotyczące przepełnienia stosu Co jest bezpieczne dla wątków lub nie jest bezpieczne w PHP? .
Ze skryptu:
/**
* @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()));
}