¿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.

Josh
fuente
1
ver respuesta en stackoverflow.com/questions/1623914/…
Haim Evgi
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
grunk
fuente
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
Mate
fuente
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.

peróxido
fuente
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!

Flemin Adambukulam
fuente
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

ShiraNai7
fuente
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? .

Phliplip
fuente
¿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()));
}
Elvis Ciotti
fuente