Знайдіть, чи встановлений PHP є безпечним для потоку чи не безпечним для потоку?


90

Як дізнатись, чи встановлена ​​версія PHP є безпечною для потоків чи не захищена від потоків?

Зверніть увагу, що я не питаю різниці між безпечним / не потоковим безпечним встановленням. Я хотів би дізнатись, що встановлено на даний момент.



1
@Haim Це не моє запитання Haim. Я бачив цю нитку. Я вже встановив PHP на цьому сервері. Його робота з IIS. Але мені потрібно з’ясувати, яка установка була використана для встановлення цього ... Налаштування Threadsafe / налаштування не theadsafe?
Джош

Відповіді:


166

Відкрийте phpinfo () і знайдіть рядок Безпека потоку . Для потоково-безпечної збірки ви повинні знайти включення .

Як зазначено в коментарях Мухаммеда Гелбани, ви також можете використовувати:

  • У Windows: php -i|findstr "Thread"
  • На * nix: php -i|grep Thread

15
У Windows: php -i|find "Thread"Увімкнено * nix:php -i|grep Thread
Мухаммад Гелбана

7
Примітка для себе: php -i | find "Architecture"щоб перевірити, чи це x86 чи x64
контрольна сума

@checksum itphp -i | grep Architecture
helpse

22

Якщо ви віддаєте перевагу використовувати командний рядок:

  • * nix:

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

    php -i | findstr -i "thread"

Це має дати щось подібне:

Thread Safety => enabled

або

Thread Safety => disabled

Не дуже гарна ідея, оскільки версія PHP, яку використовує сервер, може відрізнятися від тієї, яку вибрала ОС (за замовчуванням).
Буффало,

4

Створіть новий PHP-файл і вставте в нього цей код:

<?php
phpinfo(); ?>

Потім запустіть цю сторінку, і ви знайдете всю інформацію про PHP. Знайдіть потрібний термін, і він покаже вам, що його ввімкнено.


4

Мені просто легше переглянути файл php [версія] .dll у кореневій папці php. Це або php [версія] .dll, або php [версія] ts.dll (ts означає Thread Safe). Отже, якщо у вас встановлений php7.0.10, перейдіть до каталогу з таким ім’ям, і ви знайдете файл з назвою php7ts.dll. Це дуже сумний спосіб з’ясувати, але він працює!


4

Потім є недокументована ZEND_THREAD_SAFEконстанта, яка, здається, існує з PHP 4.3.

<?php

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

https://3v4l.org/tALKX


1

Перевірте, чи встановлено вам модуль Apache або CGI Binary. Див. Запитання щодо переповнення стека Що таке PHP-безпечний чи не-потоковий безпечний у PHP? .


Як це перевірити? Звичайно, він використовується IIS .. Але як мені дізнатися, що це за модуль? Це було моє запитання ... Я не маю на увазі запитувати різницю між безпечним / не потоковим потоком. Мені потрібно знати, чи встановлена ​​версія є потоково безпечною / ні
Джош

Гаразд, я просто трохи дослідив, і так, доступні 2 збірки ; безпечний та небезпечний. Відповідно до цього посібника з встановлення рекомендується встановлювати IIS7, не безпечні для потоку. Чи не могли б ви відкрити phpinfo () і se, якщо слово "нитка" зустрічається де-небудь?
Фліпліп,

так, у phpinfo була інформація ... Просто знайшов ... Дякую @Philiplip
Джош

1

З сценарію:

/**
 * @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()));
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.