No puedo hacer que PHP funcione en el entorno Apache VirtualHosting

No puedo hacer que PHP funcione en el entorno Apache VirtualHosting

Intentando configurar un entorno Apache VirtualHosting con PHP en un nodo CentOS recién creado en el servidor en la nube de DigitalOcean.

El problema es que, aunqueEl hosting virtual funciona per se, PHP no.

Configuración del servidor:

  • Servidor web: CentOS 6.5 con Apache/2.2.15
  • Versión de PHP: 5.3.3 (para ser utilizado como módulo de Apache)

Pasos tomados:

Iniciar sesión como elraízusuario,

  • Instalando Apache y PHP:yum -y install httpd php
  • Creando un nuevo archivo de configuración de host virtual como se muestra a continuación:

Archivo:/etc/httpd/conf.d/vhosts.conf

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>
  • Crear nuevos directorios para el sitio de host virtual

Como abajo,

mkdir -p /srv/www/example.org/public_html
mkdir -p /srv/www/example.org/logs
  • Colocando archivos de .phpprueba .htmlcomo a continuación:

Archivos en /srv/www/example.org/public_html/(DocumentRoot)

echo "<HTML>It work's</HTML>"      > /srv/www/example.org/public_html/index.html
echo "<?php echo ("It works"); ?>" > /srv/www/example.org/public_html/index.php

Luego, cuando apunto mi navegador a index.html, funciona. pero cuando yoApunte mi navegador para que index.phpaparezca una página en blanco..

Solución de problemas

(Cosas que ya hice/verifiqué sin suerte)

  • Apache asegurado se está ejecutando y DocumentRootes accesible
  • Todos los directorios son 755y archivos.644
  • Registro de acceso de Apache comprobado. Las solicitudes de página html están ahí con un código de estado 200, pero no hay ninguna .phpsolicitud de página presente en el registro de acceso.
  • No hay errores en el registro de errores de Apache o PHP, no hay errores en/var/log/messages
  • Intenté agregar php_admin_flag engine onel archivo de configuración vhost

Vea también a continuación el contenido de/etc/httpd/conf.d/php.conf

<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php

Respuesta1

En mi experiencia, PHP muestra una página en blanco cuando encuentra un error subyacente grave. Por lo general, es fácil de solucionar, pero desafortunadamente no se registra nada en los registros de Apache, PHP o syslog, lo que dificulta el proceso de solución de problemas.

Encuentre su archivo de configuración php.ini usando:

php -i | grep "php.ini"

Esto debería producir algo como esto:

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

Edite este archivo de configuración (/etc/php.ini en este caso) con su editor de texto favorito y asegúrese de que la visualización de errores y los errores de inicio estén activados. Las entradas deberían verse así:

display_errors = On
display_startup_errors = On

Finalmente reinicie Apache para que lea la nueva configuración de PHP y acceda a su página a través de curl o un navegador. Esto debería producir un mensaje de error que ayudará en el proceso de solución de problemas.

Respuesta2

Lo primero que debe hacer es verificar los registros de errores de Apache que configuró en su configuración de Apache; copiado a continuación:

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>

PHP se ejecuta bajo Apache, por lo que cualquier error que surja aparecerá en los registros del servidor. Recomiendo iniciar sesión en el servidor y usarlo tailasí:

tail -f -n 200 /srv/www/example.org/logs/error.log

¿Pero es ese el registro general de Apache para usted? ¿O es la configuración de DigitalOcean? Porque ese camino /srv/www/example.org/logs/parece bastante extraño. En Linux estándar estaría en una ubicación como esta:

tail -f -n 200 /var/log/apache2/error.log

Independientemente de dónde se envíen realmente los registros, esa será la clave de lo que sucede (o no sucede) con PHP y Apache en su servidor.

información relacionada