Yüklü PHP'nin iş parçacığı açısından güvenli olup olmadığını bulun.


93

PHP'nin kurulu sürümünün iş parçacığı için güvenli olup olmadığını nasıl anlarım?

Lütfen iş parçacığı güvenli / iş parçacığı güvenli olmayan kurulum arasındaki farkı sormadığımı unutmayın. Şu anda neyin kurulu olduğunu öğrenmek istiyorum.



1
@Haim Bu benim sorum değil Haim. O ipliği gördüm. Bu sunucuda PHP zaten kurulu. IIS ile çalışıyor. Ancak, bunu kurmak için hangi kurulumun kullanıldığını bulmam gerekiyor ... Threadsafe kurulumu / güvenli olmayan kurulum?
Josh

Yanıtlar:


168

Bir phpinfo () açın ve İş Parçacığı güvenliği satırını arayın . Bir iş parçacığı güvenli yapı için, bulmalı etkinleştirmek .

Muhammad Gelbana'nın yorumlarında belirtildiği gibi şunları da kullanabilirsiniz:

  • Windows'ta: php -i|findstr "Thread"
  • Açık * nix: php -i|grep Thread

15
Windows'ta: php -i|find "Thread"* php -i|grep Thread
nix'te

7
Kendime not: php -i | find "Architecture"x86 veya x64 olup olmadığını kontrol etmek için
sağlama toplamı

@checksum it'sphp -i | grep Architecture
helpse

22

Komut satırını kullanmayı tercih ederseniz:

  • * nix:

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

    php -i | findstr -i "thread"
    

Bu size şöyle bir şey vermelidir:

Thread Safety => enabled

veya

Thread Safety => disabled

1
Sunucu tarafından kullanılan PHP sürümü, işletim sistemi tarafından alınandan farklı olabileceğinden (varsayılan) pek iyi bir fikir değil.
Buffalo

4

Yeni bir PHP dosyası oluşturun ve bu kodu içine ekleyin:

<?php
phpinfo(); ?>

Sonra bu sayfayı çalıştırın ve tüm PHP bilgilerini bulacaksınız. İstediğiniz terimi arayın ve size etkin olduğunu gösterecektir.


4

Sadece php'nin kök klasöründeki php [version] .dll adlı dosyaya bakmayı daha kolay buluyorum. Ya php [version] .dll ya da php [version] ts.dll (ts İş Parçacığı Güvenli anlamına gelir). Öyleyse, php7.0.10 kuruluysa, bu ada sahip dizine gidin ve php7ts.dll adlı bir dosya bulacaksınız. Bu, öğrenmenin çok üzücü bir yolu, ama işe yarıyor!


4

Sonra ZEND_THREAD_SAFE, PHP 4.3'ten beri var olduğu görülen belgelenmemiş sabit var.

<?php

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

https://3v4l.org/tALKX


2

Kurulumunuzun Apache Module veya CGI Binary olup olmadığını kontrol edin. Yığın Taşması sorusuna bakın PHP'de iş parçacığı güvenli veya iş parçacığı güvenli olmayan nedir? .


Bunu nasıl kontrol ederim? Tabii ki IIS tarafından kullanılıyor .. Ama hangi modül olduğunu nasıl öğrenebilirim? Benim sorum buydu ... İş parçacığı güvenli / iş parçacığı güvenli olmayan arasındaki farkı sormak istemiyorum. Yüklü sürümün iş parçacığı açısından güvenli olup olmadığını bilmem gerekiyor
Josh

Tamam, biraz araştırdım ve evet mevcut 2 yapı var; güvenli ve güvenli değil. Bu kurulum kılavuzuna göre, IIS7 iş parçacığı güvenli olmayan kurulumlar önerilir. Bir phpinfo () açıp 'thread' kelimesinin herhangi bir yerde görünüp görünmediğini görebilir misiniz?
Phliplip

evet, phpinfo'da bilgi vardı ... Yeni buldum ... Teşekkürler @Philiplip
Josh

1

Bir komut dosyasından:

/**
 * @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()));
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.