Як дізнатись, чи встановлена версія PHP є безпечною для потоків чи не захищена від потоків?
Зверніть увагу, що я не питаю різниці між безпечним / не потоковим безпечним встановленням. Я хотів би дізнатись, що встановлено на даний момент.
Як дізнатись, чи встановлена версія PHP є безпечною для потоків чи не захищена від потоків?
Зверніть увагу, що я не питаю різниці між безпечним / не потоковим безпечним встановленням. Я хотів би дізнатись, що встановлено на даний момент.
Відповіді:
Відкрийте phpinfo () і знайдіть рядок Безпека потоку . Для потоково-безпечної збірки ви повинні знайти включення .
Як зазначено в коментарях Мухаммеда Гелбани, ви також можете використовувати:
php -i|findstr "Thread"
php -i|grep Thread
php -i|find "Thread"
Увімкнено * nix:php -i|grep Thread
php -i | find "Architecture"
щоб перевірити, чи це x86 чи x64
php -i | grep Architecture
Якщо ви віддаєте перевагу використовувати командний рядок:
* nix:
php -i | grep -i "Thread"
Windows:
php -i | findstr -i "thread"
Це має дати щось подібне:
Thread Safety => enabled
або
Thread Safety => disabled
Мені просто легше переглянути файл php [версія] .dll у кореневій папці php. Це або php [версія] .dll, або php [версія] ts.dll (ts означає Thread Safe). Отже, якщо у вас встановлений php7.0.10, перейдіть до каталогу з таким ім’ям, і ви знайдете файл з назвою php7ts.dll. Це дуже сумний спосіб з’ясувати, але він працює!
Потім є недокументована ZEND_THREAD_SAFE
константа, яка, здається, існує з PHP 4.3.
<?php
if (ZEND_THREAD_SAFE) {
echo 'Thread safe';
} else {
echo 'Not thread safe';
}
Перевірте, чи встановлено вам модуль Apache або CGI Binary. Див. Запитання щодо переповнення стека Що таке PHP-безпечний чи не-потоковий безпечний у PHP? .
З сценарію:
/**
* @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()));
}