
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
.php
prueba.html
como 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.php
aparezca una página en blanco..
Solución de problemas
(Cosas que ya hice/verifiqué sin suerte)
- Apache asegurado se está ejecutando y
DocumentRoot
es accesible - Todos los directorios son
755
y 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
.php
solicitud 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 on
el 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 tail
así:
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.