[php] 설치된 PHP가 스레드 세이프인지 비스 레드 세이프인지 확인 하시겠습니까?

설치된 PHP 버전이 스레드로부터 안전한지 여부를 어떻게 알 수 있습니까?

스레드 세이프 / 비 스레드 세이프 설치의 차이점을 묻는 것이 아닙니다. 현재 설치된 것이 무엇인지 알고 싶습니다.



답변

phpinfo ()를 열고 Thread safety 라인을 검색하십시오 . 스레드로부터 안전한 빌드의 경우 enable 을 찾아야 합니다 .

Muhammad Gelbana 의 주석에 지정된 대로 다음을 사용할 수도 있습니다.

  • Windows의 경우 : php -i|findstr "Thread"
  • * nix에서 : php -i|grep Thread


답변

명령 줄을 사용하려는 경우 :

  • *아니야:

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

    php -i | findstr -i "thread"
    

이것은 당신에게 다음과 같은 것을 줄 것입니다 :

Thread Safety => enabled

또는

Thread Safety => disabled


답변

새 PHP 파일을 만들고 다음 코드를 삽입합니다.

<?php
phpinfo(); ?>

그런 다음이 페이지를 실행하면 모든 PHP 정보를 찾을 수 있습니다. 원하는 용어를 검색하면 활성화 된 것으로 표시됩니다.


답변

php의 루트 폴더에있는 php [version] .dll 파일을 보는 것이 더 쉽습니다. php [version] .dll 또는 php [version] ts.dll (ts는 스레드 세이프를 의미)입니다. 따라서 php7.0.10이 설치되어있는 경우이 이름이있는 디렉토리로 이동하면 php7ts.dll이라는 파일을 찾을 수 있습니다. 이것은 알아내는 매우 슬픈 방법이지만 작동합니다!


답변

그리고 문서화되지 않은 ZEND_THREAD_SAFE상수가 있는데, PHP 4.3 이후로 존재하는 것 같습니다.

<?php

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

https://3v4l.org/tALKX


답변

설치가 Apache Module 또는 CGI Binary인지 확인하십시오. 스택 오버플로 질문 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()));
}