¿Encontrar si el PHP instalado es seguro para subprocesos o no?


90

¿Cómo puedo saber si la versión instalada de PHP es segura para subprocesos o no?

Tenga en cuenta que no estoy preguntando la diferencia entre una instalación segura para subprocesos / no segura para subprocesos. Me gustaría saber qué está instalado actualmente.



1
@Haim Esa no es mi pregunta, Haim. Vi ese hilo. Ya tengo PHP instalado en este servidor. Está trabajando con IIS. Pero, necesito averiguar qué configuración se usó para instalar esto ... ¿Configuración Threadsafe / la configuración no theadsafe?
Josh

Respuestas:


166

Abra un phpinfo () y busque la línea Thread safety . Para una compilación segura para subprocesos, debe encontrar enable .

Como se especifica en los comentarios de Muhammad Gelbana , también puede usar:

  • En Windows: php -i|findstr "Thread"
  • En * nix: php -i|grep Thread

15
En Windows: php -i|find "Thread"en * nix:php -i|grep Thread
Muhammad Gelbana

7
Nota personal: php -i | find "Architecture"para comprobar si es x86 o x64
suma de comprobación

@checksum it'sphp -i | grep Architecture
helpse

22

Si prefiere usar la línea de comando:

  • *nada:

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

    php -i | findstr -i "thread"

Esto debería darle algo como esto:

Thread Safety => enabled

o

Thread Safety => disabled

No es una muy buena idea, ya que la versión de PHP utilizada por el servidor puede ser diferente a la recogida por el sistema operativo (la predeterminada).
Buffalo

4

Cree un nuevo archivo PHP e inserte este código en él:

<?php
phpinfo(); ?>

Luego ejecute esta página y encontrará toda la información de PHP. Busque el término que desee y le mostrará que está habilitado.


4

Me resulta más fácil mirar el archivo llamado php [versión] .dll en la carpeta raíz de php. Es php [versión] .dll o php [versión] ts.dll (ts significa Thread Safe). Entonces, si tiene php7.0.10 instalado, vaya al directorio que tiene este nombre y encontrará un archivo llamado php7ts.dll. Esta es una forma muy triste de averiguarlo, ¡pero funciona!


4

Luego está la ZEND_THREAD_SAFEconstante indocumentada , que parece existir desde PHP 4.3.

<?php

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

https://3v4l.org/tALKX


1

Compruebe si su instalación es Apache Module o CGI Binary. Consulte la pregunta de Stack Overflow ¿ Qué es seguro para subprocesos o no seguro para subprocesos en PHP? .


¿Cómo lo compruebo? Por supuesto, está siendo utilizado por IIS. Pero, ¿cómo puedo saber qué módulo es? Esa fue mi pregunta ... No quiero preguntar la diferencia entre threadsafe / non thread safe. Necesito saber si la versión instalada es segura para subprocesos / no
Josh

Ok, acabo de investigar un poco, y sí, hay 2 compilaciones disponibles; seguro y no seguro. Según esta guía de instalación, se recomiendan las instalaciones no seguras para subprocesos de IIS7 . ¿Podría abrir un phpinfo () y ver si la palabra 'hilo' aparece en alguna parte?
Phliplip

sí, phpinfo tenía la información ... Lo acabo de encontrar ... Gracias @Philiplip
Josh

1

De un guión:

/**
 * @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()));
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.