¿Qué es mod_php?

108

Mientras seguía un tutorial de Zend , encontré la siguiente declaración:

Tenga en cuenta que la configuración de php_flag en .htaccess solo funciona si está utilizando mod_php.

¿Alguien puede explicar qué significa eso?

SpikETidE
fuente

Respuestas:

158

mod_phpsignifica PHP, como módulo de Apache .

Básicamente, cuando se carga mod_phpcomo un módulo de Apache, le permite a Apache interpretar archivos PHP (estos son interpretados por mod_php) .


EDITAR: Hay (al menos) dos formas de ejecutar PHP, cuando se trabaja con Apache:

  • Usando CGI : Apache inicia un proceso PHP, y es ese proceso PHP el que interpreta el código PHP, no el propio Apache
  • Usando PHP como un módulo de Apache (llamado mod_php) : el intérprete de PHP está entonces como "incrustado" dentro del proceso de Apache: no hay un proceso de PHP externo, lo que significa que Apache y PHP pueden comunicarse mejor.


Y vuelva a editar, después del comentario : usando CGI o mod_phpdepende de usted: es solo una cuestión de configuración de su servidor web.

Para saber qué forma se usa actualmente en su servidor, puede verificar la salida de phpinfo(): debe haber algo que indique si PHP se está ejecutando a través de mod_php (o mod_php5) , o mediante CGI.

También es posible que desee echar un vistazo a la php_sapi_name()función: devuelve el tipo de interfaz entre el servidor web y PHP .


Si verifica los archivos de configuración de Apache, cuando lo use mod_php, debería haber una LoadModulelínea como esta:

LoadModule php5_module        modules/libphp5.so

(El nombre del archivo, a la derecha, puede ser diferente; en Windows, por ejemplo, debería ser a .dll)

Pascal MARTIN
fuente
Usé xampp para instalar el paquete php, apache y mysql ... Entonces, ¿cuál será mi configuración?
SpikETidE
Debe habilitarlo si PHP no está funcionando actualmente. Si PHP ya está funcionando, entonces debe estar usando CGI, en cuyo caso probablemente necesitará hacer algo más que habilitar el módulo. Es posible que el módulo ni siquiera exista en el sistema.
d11wtq
1
Sip..!. Cuando ejecuto phpinfo (), veo que mod_php5 está incluido en la sección Módulos cargados ... Y eso significa que lo tengo ejecutándose como un módulo apache ... ¿verdad?
SpikETidE
3
mod_phpes, con mucho, la configuración más común.
troelskn
@Pascal, yo diría mod_phpque no es PHP real; es solo un complemento de Apache. O más bien, creo que debería comenzar la respuesta con una definición de ¿Qué significa exactamente PHP?
Pacerier
58

Esta respuesta está tomada de TuxRadar :

Al ejecutar PHP a través de su servidor web, hay dos opciones distintas: ejecutarlo utilizando CGI SAPI de PHP o ejecutarlo como un módulo para el servidor web. Cada uno tiene sus propios beneficios, pero, en general, se prefiere el módulo.

Ejecutar PHP como CGI significa que básicamente le dice a su servidor web la ubicación del archivo ejecutable PHP, y el servidor ejecuta ese ejecutable, dándole el script que llamó, cada vez que visita una página. Eso significa que cada vez que carga una página, PHP necesita leer php.ini y establecer su configuración, necesita cargar todas sus extensiones, y luego necesita empezar a trabajar analizando el script - hay mucho trabajo repetido.

Cuando ejecuta PHP como un módulo, PHP se encuentra literalmente dentro de su servidor web: se inicia solo una vez, carga sus configuraciones y extensiones solo una vez y también puede almacenar información entre sesiones. Por ejemplo, los aceleradores de PHP dependen de que PHP pueda guardar datos almacenados en caché a través de solicitudes, lo cual es imposible con la versión CGI.

La ventaja obvia de usar PHP como módulo es la velocidad: verá un gran aumento de velocidad si convierte de CGI a un módulo. Muchas personas, en particular los usuarios de Windows, no se dan cuenta de esto y continúan usando php.exe CGI SAPI, lo cual es una pena: el módulo suele ser de tres a cinco veces más rápido.

Sin embargo, hay una ventaja clave de usar la versión CGI y es que PHP lee sus configuraciones cada vez que carga una página. Con PHP ejecutándose como un módulo, cualquier cambio que realice en el archivo php.ini no se activará hasta que reinicie su servidor web, lo que hace que la versión CGI sea preferible si está probando muchas configuraciones nuevas y desea ver respuestas instantáneas.

SpikETidE
fuente
@JohannEchavarria, a menos que hayas agregado muchas cosas locas, reiniciar el servidor solo tomará unos segundos. Para los sistemas modernos "normales" con SSD es menos de 2 segundos.
Pacerier
12

Su servidor necesita tener los módulos php instalados para que pueda analizar el código php.

Si está en ubuntu, puede hacerlo fácilmente con

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

De lo contrario, puede compilar apache con php: http://dan.drydog.com/apache2php.html

Especificar el sistema operativo de su servidor ayudará a otros a responder más específicamente.

cdated
fuente
5

Significa que debe tener PHP instalado como un módulo en Apache, en lugar de iniciarlo como un script CGI.

Ondrej Slinták
fuente
3

Solo para agregar estas respuestas es que mod_php es el método más antiguo y más lento disponible en el servidor HTTPD para usar PHP. No se recomienda, a menos que esté ejecutando versiones antiguas de Apache HTTPD y PHP. php-fpm y proxy_cgi son los métodos preferidos.

Tejas Sarade
fuente
0

mod_php es un intérprete de PHP.

De los documentos, una captura importante de mod_php es,

"mod_php no es seguro para subprocesos y te obliga a seguir con el mpm prefork (multiproceso, sin subprocesos), que es la configuración más lenta posible"

kta
fuente