PHP no funciona en Apache2 después de la actualización del sistema

14

Recientemente actualicé mi sistema de Karmic a Lucid. Esto involucró la actualización de Apache y PHP, creo.

Ahora mi servidor no puede manejar archivos PHP, cualquier navegación hacia ellos está provocando descargas en lugar de análisis.

El módulo PHP todavía está cargado en Apache habilitado para mods y lo tengo AddType application/x-httpd-php .phpen mi httpd.conf.

No hay mensajes significativos en el acceso de Apache o en los registros de errores, así que estoy perplejo.

Cualquier ayuda sería apreciada. Gracias.

Jivings
fuente

Respuestas:

17

/var/log/apache2/error.log debería mostrar una línea como la siguiente si PHP se cargó correctamente:

[Mar 30 de agosto 12:53:36 2011] [aviso] Apache / 2.2.14 (Ubuntu) PHP / 5.3.2-1ubuntu4.9 con Suhosin-Patch configurado - reanudando las operaciones normales

Presta atención a la fecha, si es algo de 2009, has configurado mal algo.

AddType es inútil, necesitas usar:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Ver también las instrucciones de instalación en php.net para Apache 2.x .

No debería tener la necesidad de agregarlo manualmente, el paquete se libapache2-mod-php5instala /etc/apache2/mods-available/php5.confcon:

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Como es un archivo de conffiles, es posible que no esté instalado con la actualización. Para arreglar eso, purgue y luego instálelo nuevamente:

sudo apt-get purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5

Para habilitar PHP, debe ejecutar:

sudo a2enmod php5

Reinicie el servidor web después de:

sudo /etc/init.d/apache2 restart

Otras cosas que hacer:

  • compruebe si hay configuraciones conflictivas en /etc/apache2.
  • ¿Has construido Apache desde la fuente?
  • Ejecute sudo apache2ctl configtestpara verificar su configuración en busca de errores de sintaxis
  • Abra http: // localhost / server-info para verificar la configuración y los módulos cargados. El statusmódulo debe estar cargado para eso. Si está ejecutando un servidor remoto, debe agregarse a la Allow fromlista /etc/apache2/mods-enabled/status.confy reiniciar el servidor después
Lekensteyn
fuente
Brillante. AFK en este momento, pero probaré esto esta noche. Gracias.
Jivings
Purgado y reinstalado, el módulo se carga en mods habilitado, pero todavía tengo el mismo problema ... No puedo encontrar nada que esté en conflicto y la inclusión de los archivos conf definitivamente está presente en apache.conf. ¿Tienes alguna otra idea? Gracias.
Jivings
@Jivings: algunas ideas de depuración añadió
Lekensteyn
Aún incapaz de resolverlo. Sin embargo, he descubierto algo aún más curioso. Parece que PHP está funcionando bien para uno de los hosts virtuales que está configurado, aunque todo lo que hace es definir un DocumentRoot en / var / www. ¡¿Cómo es esto posible?!
Jivings
1
Aún necesitará vaciar la memoria caché de su navegador y reiniciar Apache.
Francesco
3

Bueno, después de que nada más funcionó y Apache se estaba volviendo muy confuso, finalmente eliminé todos los paquetes de Apache y los reinstalé.

Parece estar funcionando bien ahora, quién sabe qué estaba mal ...

EDITAR

Descubrí lo que estaba mal cuando estaba configurando mis ajustes de configuración de Apache nuevamente. [Esta entrada de blog] [1] lo explica.

Resulta que, aunque el módulo userdir no está en uso activo, el resto de los archivos de sitios residen en mi carpeta ~ / public_html, y php se estaba deshabilitando para todo lo que había allí.

Supongo que esto debe haber sido una adición reciente al módulo php que no estaba presente en mi configuración kármica.

Jivings
fuente
1
Eso debería estar relacionado con un problema de configuración. En las actualizaciones, no /etcse copian archivos en afaik (al menos, alguien tuvo un problema con /etc/init.d/apache2no ser creado al reinstalar, solo en purgar + instalar)
Lekensteyn
Es extraño que funcionó antes de la actualización de mi sistema entonces ...
Jivings
probablemente un cambio de características entonces. No puede esperar que cada actualización respete las configuraciones antiguas. Algunas modificaciones tendrían sentido para la mayoría, pero no para otras.
Lekensteyn
En efecto. Gracias por ayudarme a llegar al fondo de todos modos, muy apreciado :)
Jivings
1

el php5.confarchivo /etc/apache2/mods-enabledtiene unas pocas líneas en la parte inferior que evitan que php se ejecute dentro de un directorio de usuarios, por lo que, dependiendo de su configuración, este también podría ser su problema. Puedes comentar estas líneas y volver a cargar apache2

Jeff
fuente