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.