[PHP] Variables de Apache

Standard

Estas variables son creadas por el servidor web Apache (http://www.apache.org/). Si se está utilizando otro servidor web, no hay garantía de que proporcione las mismas variables; pueden faltar algunas, o proporcionar otras no listadas aquí. Dicho esto, también están presentes las variables de la especificación CGI 1.1, por lo que también se deben tener en cuenta.

Tenga en cuenta que unas pocas, como mucho, de estas variables van a estar disponibles (o simplemente tener sentido) si se ejecuta PHP desde la línea de comandos.

<?php
//Qué revisión de la especificación CGI está usando el servidor; por ejemplo ’CGI/1.1’.
echo '<p>'.var_dump($_SERVER['GATEWAY_INTERFACE']).'</p>';

//El nombre del equipo servidor en el que se está ejecutando el script. Si el script se está ejecutando
//en un servidor virtual, este será el valor definido para dicho servidor virtual.
echo '<p>'.var_dump($_SERVER['SERVER_NAME']).'</p>';

//Una cadena de identificación del servidor, que aparece en las cabeceras al responderse a las
//peticiones.
echo '<p>'.var_dump($_SERVER['SERVER_SOFTWARE']).'</p>';

//Nombre y revisión del protocolo a través del que se solicitó la página; p.ej. ’HTTP/1.0’;
echo '<p>'.var_dump($_SERVER['SERVER_PROTOCOL']).'</p>';

//Qué método de petición se usó para acceder a la página; p.ej. ’GET’, ’HEAD’, ’POST’, ’PUT’.
echo '<p>'.var_dump($_SERVER['REQUEST_METHOD']).'</p>';

//La cadena de la petición, si la hubo, mediante la que se accedió a la página.
echo '<p>'.var_dump($_SERVER['QUERY_STRING']).'</p>';

//El directorio raíz del documento bajo el que se ejecuta el script, tal y como está definido en el
//fichero de configuración del servidor.
echo '<p>'.var_dump($_SERVER['DOCUMENT_ROOT']).'</p>';

//Los contenidos de la cabecera Accept: de la petición actual, si hay alguna.
echo '<p>'.var_dump($_SERVER['HTTP_ACCEPT']).'</p>';

//Los contenidos de la cabecera Accept-Charset: de la petición actual, si hay alguna. Por
//ejemplo: ’iso-8859-1,*,utf-8’.
echo '<p>'.var_dump($_SERVER['HTTP_ACCEPT_CHARSET']).'</p>';

//Los contenidos de la cabecera Accept-Encoding: de la petición actual, si la hay. Por ejemplo:
//’gzip’.
echo '<p>'.var_dump($_SERVER['HTTP_ENCODING']).'</p>';


//Los contenidos de la cabecera Accept-Language: de la petición actual, si hay alguna. Por
//ejemplo: ’es-ar’.
echo '<p>'.var_dump($_SERVER['HTTP_ACCEPT_LANGUAGE']).'</p>';

//Los contenidos de la cabecera Connection: de la petición actual, si hay alguna. Por ejemplo:
//’Keep-Alive’.
echo '<p>'.var_dump($_SERVER['HTTP_CONNECTION']).'</p>';

//Los contenidos de la cabecera Host: de la petición actual, si hay alguna.
echo '<p>'.var_dump($_SERVER['HTTP_HOST']).'</p>';

//La dirección de la página (si la hay) desde la que el navegador saltó a la página actual. Esto lo
//establece el navegador del usuario; no todos los navegadores lo hacen.
echo '<p>'.var_dump($_SERVER['HTTP_REFERER']).'</p>';

//Los contenidos de la cabecera User_Agent: de la petición actual, si hay alguna. Indica el
//navegador que se está utilizando para ver la página actual; p.ej. Mozilla/4.5 [en] (X11; U;
//Linux 2.2.9 i586). Entre otras cosas, se puede usar este valor con get_browser() para adaptar la
//funcionalidad de la página a las posibilidades del navegador del usuario.
echo '<p>'.var_dump($_SERVER['HTTP_USER_AGENT']).'</p>';

//La dirección IP desde la que el usuario está viendo la página actual.
echo '<p>'.var_dump($_SERVER['REMOTE_ADDR']).'</p>';

//El puerto que se está utilizando en la máquina del usuario para comunicarse con el servidor web.
echo '<p>'.var_dump($_SERVER['REMOTE_PORT']).'</p>';

//La vía de acceso absoluta del script que se está ejecutando.
echo '<p>'.var_dump($_SERVER['SCRIPT_FILENAME']).'</p>';

//El valor que se haya dado a la directiva SERVER_ADMIN (en Apache) en el fichero de
//configuración del servidor web. Si el script se está ejecutando en un servidor virtual, será el valor
//definido para dicho servidor virtual.
echo '<p>'.var_dump($_SERVER['SERVER_ADMIN']).'</p>';

//El puerto del equipo servidor que está usando el servidor web para la comunicación. Para
//configuraciones por defecto, será ’80’; al usar SSL, por ejemplo, cambiará al puerto que se haya
//definido como seguro para HTTP.
echo '<p>'.var_dump($_SERVER['SERVER_PORT']).'</p>';

//Una cadena que contiene la versión del servidor y el nombre del servidor virtual que es añadida a
//las páginas generadas por el servidor, si está característica está activa.
echo '<p>'.var_dump($_SERVER['SERVER_SIGNATURE']).'</p>';

//Vía de acceso basada en el sistema de ficheros- (no el directorio raíz del documento-) del script en
//cuestión, después de que el servidor haya hecho la conversión virtual-a-real.
echo '<p>'.var_dump($_SERVER['PATH_TRANSLATED']).'</p>';

//Contiene la vía de acceso del script actual. Es útil para páginas que necesitan apuntar a sí mismas.
echo '<p>'.var_dump($_SERVER['SCRIPT_NAME']).'</p>';

//La URI que se dió para acceder a esta página; por ejemplo, ’/index.html’.
echo '<p>'.var_dump($_SERVER['REQUEST_URI']).'</p>';
?>

Saludos…

Virtual Host en Ubuntu 9.10

Standard

Cuando tenemos solo un proyecto, no vemos la necesidad de crear host virtuales para separar los mismos, solo utilizamos la raiz / (/var/www/) para nuestro proyecto y somos felices :).

Pero, a la hora de múltiples proyectos, esto es un problema que debemos solucionar para no aumentar la complejidad y evitar posibles errores de programación a futuro.

Suponemos que tenemos 2 proyectos (Moodle y una copia de seguridad de Zarpele!), y actualmente lo tenemos instalados en:

/var/www/moodle
/var/www/zarpele

Bien para hacer bien las cosas debemos crear en nuestro proyectos 2 host virtuales. A continuación crearemos el host que utilizaremos para Moodle y de forma idéntica podrán crear los demás.

Editando hosts

El archivo hosts de un ordenador es, en su origen, un vestigio de los tiempos en que sólo había unos pocos dominios y se enviaba la lista con todos ellos y sus respectivas IPs en un archivo llamado hosts.

En la actualidad todas las peticiones se realizan a los servidores DNS. No obstante, los sistemas actuales mantienen este archivo, de modo que es posible modificar a mano a qué IP deben resolver determinados dominios. Así su principal utilidad actual es el bloqueo de las direcciones de la publicidad web.

Aja si mucha Wikipedia, en resumen editaremos el archivos hosts para que en vez de dejarle a nuestro servidor de DNS que resuelva el nombre de dominio ingresado y lo relacione con una IP se resuelva localmente sin necesidad de “buscar” ese dominio ya que tenemos la relacion IP-Dominio en nuestra PC.

Con privilegios de administrador, editaremos el siguiente archivo

sudo gedit /etc/hosts

Ahora bien tendremos algo asi…

127.0.0.1	localhost
 
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Atención: Este archivo puede variar según características de la PC utilizada.

El nombre que vamos a utilizar es moodle-local, pueden elegir el que quieran, pero traten de no poner una pagina verdadera como taringa.net , ya que esta podría no funcionar o en todo caso nos direccionaría a nuestro proyecto :)

127.0.0.1	localhost
127.0.0.1 moodle-local
 
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Creando sites-available

Lo siguiente que debemos hacer, es informarle a Apache de estos host. Para el cual debemos crear 2 (seguiremos con el ejemplo y solo creare moodle-local, igualmente se hacen los demas) ficheros en /etc/apache2/sites-available.

Crearemos moodle-local con el siguiente contenido…

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName moodle-local
	DocumentRoot /var/www/moodle
	<Directory />
		Options FollowSymLinks
		AllowOverride all
	</Directory>
	<Directory /var/www/moodle>         
		Options Indexes FollowSymLinks MultiViews
		AllowOverride all 
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>

Las lineas importantes son:
ServerName, aquí pondremos el nombre de dominio que acabamos de crear en nuestro archivo hosts.
DocumentRoot, aquí pondremos la ruta raiz donde se encuentra nuestro proyecto
, idem anterior…

Creando sites-eneable

Ahora utilizaremos el comando a2ensite “available to enabled site”, para dejar andando nuestro virtualhost…

sudo a2ensite moodle-local

Si todo sale bien, la consola nos devolvería

Enabling site moodle-local.
Run '/etc/init.d/apache2 reload' to activate new configuration!

Reiniciando Apache

Como leyeron anteriormente, debemos reiniciar nuestro apache para que todo que joya.

sudo /etc/init.d/apache2 reload

Y listo!!!

Probando nuestro Host Virtual

En nuestro navegador ponemos moodle-local y entramos a nuestro moodle.