SERVIDOR APACHE
ALGUNAS DIRECTIVAS DE CONFIGURACIÓN:
ServerRoot
La directiva ServerRoot es el directorio raíz donde se almacenan los
distintos ficheros que utiliza el servidor Apache. Es importante no añadir una
barra al final del nombre del último directorio.
Listen
La directiva Listen indica las direcciones IP y los puertos en los que
debe escuchar Apache; por defecto, el servidor responde a las peticiones que se
reciban en cualquier dirección IP de las interfaces de red. El uso de Listen es
ahora obligatorio. Si no está en el fichero de configuración, el servidor no
podrá iniciarse. Esto supone un cambio respecto a las versiones anteriores de
Apache.
La directiva Listen le especifica al servidor los puertos o las
combinaciones de direcciones y puertos cuyas peticiones debe aceptar. Si
solamente se especifica un número de puerto, el servidor escuchará en ese
puerto, en todas las interfaces de red. Si se especifica una dirección IP y un
puerto, el servidor escuchará solamente en esa dirección IP y en ese puerto.
Se pueden usar varias directivas Listen para especificar varias
direcciones y puertos de escucha. El servidor responderá a peticiones de
cualquiera de esas direcciones y puertos.
Por ejemplo, para hacer que el servidor acepte conexiones en los puertos
80 y 8000, use:
Listen 80
Listen 8000
Para hacer que el servidor acepte conexiones en dos direcciones y
puertos diferentes, use:
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
Timeout
Timeout indica el número de segundos antes de que se cancele una
conexión por falta de respuesta.
KeepAlive
El comando
KeepAlive determina si el servidor permitirá varias conexiones a la vez (p.e.,
más de una petición por conexión). KeepAlive puede usarse para impedir que un
cliente consuma muchos recursos del servidor. El comando KeepAlive aparece ya
en on por defecto, lo que significa que se permiten varias conexiones a la vez.
Puede ponerse en off para desactivarlas. Consulte la sección de nombre
MaxKeepAliveRequests para conocer un método alternativo para limitar las
peticiones.
MaxKeepAliveRequests
Esta
directiva establece el número máximo de peticiones permitidas por cada conexión
que se produzca a la vez. El Grupo Apache recomienda un valor alto, lo que
mejoraría el rendimiento. El valor predeterminado del comando
MaxKeepAliveRequests es de 100 que debería bastar en la mayoría de los casos.
MaxClients
El comando
MaxClients establece un límite al total de los procesos del servidor (es decir,
clientes conectados simultáneamente) que se ejecutan a la vez. Debe mantener el
comando MaxClients a un valor alto (el valor por defecto es 150), porque no se
permitirán nuevas conexiones una vez que se alcance el número máximo de
clientes simultáneamente conectados. El valor del comando MaxClients no puede
superar el 256 sin que se haya recompilado Apache. La principal razón de tener
el parámetro MaxClients es evitar que un servidor errático vuelva inestable al
sistema operativo.
Dynamic Shared Object
(DSO) Support
LoadModule php6_module
C:/AppServ\php6\php6apache2_2.dll
Aquí se
realiza la carga de los módulos de apache, al cargar el modulo de php, apache
podrá hacer uso del interprete php. Se debe verificar que la librería
php6apache2_2.dll se encuentre la ruta indicada, y este relacionada con la
versión de apache instalada, ya que de otra forma el servidor no podrá
levantar.
ServerAdmin
Especifica la dirección de e-mail que
el servidor incluye en cualquier mensaje de error que envía al cliente.Sería conveniente tener una dirección de email solo para esto, por ejemplo:
ServerAdmin
www-admin@foo.example.com Ya que los usuarios no siempre mencionan que están hablando del servidor
ServerName
Especifica el nombre de host y el puerto que usa el servidor para identificarse. Esto se usa cuando se hace redirección de URLs. Por ejemplo, si el nombre de la maquina del servidor web es
simple.example.com, pero el la maquina también tiene el alias DNS
www.example.com y quiere que el servidor web se identifique así,
debe usar la siguiente directiva:ServerName www.example.com:80 DocumentRoot
Esta
directiva especifica el directorio desde el cuál la URL solicitada a este
directorio para construir la ruta del documento a servir. Ejemplo:
httpd
servirá los ficheros. A menos que especifique alguna otra equivalencia mediante
una directiva Alias, el servidor añade la ruta de DocumentRoot
/usr/web
Esto quiere
decir que una petición de acceso a
http://www.my.host.com/index.html se refiere a /usr/web/index.html en el sistema de ficheros.
El
directorio que especifique en
DocumentRoot debe escribirlo sin barra al final.
Si se
altera DocumentRoot se debe alterar tambien <Directory
"C:/AppServ/www">.
IfModule dir_module
<IfModule dir_module>
DirectoryIndex index.php index.html
index.htm
</IfModule>
Aquí se especifica cual será el script inicial que se presentara en el
navegador al intentar entrar la ruta publicada por apache, especificada en
DocumentRoot.
INTERPRETE PHP
ALGUNAS DIRECTIVAS DE CONFIGURACIÓN:
short_open_tag
Indica a PHP si las etiquetas cortas (
<? ?>) de apertura de PHP están activadas. Si por lo
contrario está desactivado, debe usar siempre la forma larga de abrir la
etiqueta PHP (<?php
?>).
asp_tags
Activa el uso de las etiquetas igual que ASP
<% %> además de las normales <?php ?>. Esto incluye la forma corta
variable-valor <%= $value %>
precision
El número de dígitos que se muestran después de
la coma flotante.
y2k_compliance
Asegura la compatibilidad con el año 2000
(causará problemas con navegadores no compatibles)
register_globals
Registre o no registre las
variables EGPS (Entorno, GET, POST, Cookie, Server) son globales.
En » PHP 4.2.0, esta
directiva está por defecto off.
Por favor, note que
register_globals no puede ser definido en tiempo de ejecucción
(ini_set()). Aún así, puede usar .htaccess
si el servidor se lo permite, tal como se muestra debajo. Un ejemplo de entrada
.htaccess: php_flag
register_globals off.
Esta opción ha sido declarada OBSOLETA desde PHP
5.3.0. Su uso está totalmente desaconsejado.
Quizás
el cambio más controversial en PHP fue cuando el valor
predeterminado para la directiva de PHP register_globals
pasó de ON a OFF en PHP » 4.2.0. La dependencia sobre esta
directiva era bastante común y muchas personas ni siquiera sabía que existía y
asumían sólo que ese era el modo como PHP funcionaba. Esta
página explicará cómo se puede escribir código inseguro con esta directiva,
pero tenga en cuenta que la directiva en si misma no es insegura sino el uso
inapropiado de ella.
Cuando
está activada, register_globals inyectará los scripts con todo tipo de
variables, como las de peticiones provenientes de formularios HTML.
Esto, unido al hecho de que PHP no requiere la
inicialización de variables, significa que es muy fácil escribir código
inseguro. Fue una decisión difícil, pero la comunidad de PHP
decidió desactivar esta directiva por defecto. Cuando está activada, las
personas usan variables que en realidad no se sabe a ciencia cierta de dónde
provienen y solo queda asumir. Las variables internas que son definidas en el
script mismo son mezcladas con los datos requeridos enviados por los usuarios y
al deshabilitar register_globals se cambia esto.
<?php// $authorized = true Se define sólo si el usuario está autenticadoif (authenticated_user()) { $authorized = true;}// Debido a que no se inicializa $authorized como false, esta podría ser// definida a través de register_globals, como desde GET auth.php?authorized=1// ¡Por lo tanto, cualquier persona puede verse como autenticada!if ($authorized) { include "/highly/sensitive/data.php";}?> |
register_long_arrays
Dice a PHP cuando o no registrar las obsoletas
variables predefinidas del tipo $HTTP_*_VARS Cuando esté activado, variables largas como $HTTP_GET_VARS estarán definidas. Si no las utiliza, se
recomienda desactivarlas, por razones de rendimiento. En su lugar, puede usar
las Arrays superglobales, como $_GET. Esta directiva empezó a estar disponible en PHP
5.0.0.
Esta opción ha sido declarada OBSOLETA desde PHP 5.3.0.
Su uso está totalmente desaconsejado.
post_max_size
Define el tamaño máximo de datos post
permitidos. Esta opción también afecta a la subida de ficheros. Para poder
subir ficheros grandes, este valor de ser mayor que upload_max_filesize. Si el límite de memoria está activado en su
script de configuración, memory_limit
también afecta la subida de ficheros. Por norma general, memory_limit debe ser
mayor que post_max_size.
upload_max_filesize
El tamaño máximo a subir un fichero.
memory_limit
Establece el máximo de memoria en bytes que un script puede consumir.
Ayuda a prevenir que scripts mal programados consuman toda la memoria
disponible en el servidor. Nota para no tener límite de memoria, establezca
esta directiva a -1.
max_execution_time
Este valor establece el tiempo máximo en segundos que se permite
ejecutar antes de que el analizador termine. Esto ayuda a prevenir que scripts
mal escritos bloqueen el servidor. El valor por defecto es 30.
max_input_time
Establece el tiempo máximo en segundos que se permite a un script
analizar datos de entrada, como POST, GET. Se mide desde el momento de
recepción de todos los datos en el servidor hasta el inicio de la ejecución del
script.
upload_tmp_dir
Directorio
temporal usado para guardar los ficheros durante el proceso de subida. Debe
tener permisos de escritura para el usuario que está ejecutando PHP. Si no está
especificado PHP usará el predeterminado del sistema.
Si
el directorio especificado no tiene permisos de escritura PHP volverá al
directorio temporal del sistema por defecto. Si la directiva open_basedir está
habilitada, entonces el directorio del sistema por defecto debe permitir la
subida de ficheros para que funcione.
error_reporting
Establece
el nivel de notificación de errores. El parámetro es un valor de tipo integer
que representa un campo de bits, o constantes nominadas. Los niveles de
error_reporting y constantes están descritos en Constantes Predefinidas, y en php.ini.
Para establecerlo en tiempo de ejecución, use la función error_reporting(). Vea también
la directiva display_errors.
display_errors
Determina
si los errores deberían ser impresos en pantalla como parte de la salida o si
deberían ocultarse al usuario.
INTERPRETE PHP
SALIENDO DE HTML / INSTRUCCIÓN SEPARADOR /
COMENTARIO / VARIABLES / TIPOS DE DATOS / CONSTANTES
Saliendo de HTML
Cuando
PHP interpreta un fichero, buscar por las etiquetas de apertura y fin de
bloque, que dicen a PHP donde empezar y finalizar la interpretación del código.
Este mecanismo permite a PHP ser incrustado en todo tipo de documentos, todo lo
que esté fuera de las etiquetas de PHP será ignorado por el interpretador. La
mayoría de veces se encontrará con PHP incrustado en documentos HTML, como se
muestra en este ejemplo.
<p>Este texto va a ser ignorado.</p><?php echo 'Mientras que esto va a ser interpretado.'; ?><p>Esto también será ignorado.</p>
También se pueden usar estructuras más avanzadas:
<?phpif ($expression) { ?> <strong>Esto es verdadero.</strong> <?php} else { ?> <strong>Esto es falso.</strong> <?php}?>
Instrucción separador
Como
en C o Perl, PHP requiere que las instruciones terminen en punto y coma al
final de cada declaración. La etiqueta de fin de bloque de PHP automáticamente
implica un punto y coma. No se tiene que usar punto y comoa para cerrar la
última línea de código de PHP. La etiqueta de fin de bloque incluirá de
inmediato salto de línea si no está presente.
<?php echo 'Esto es una prueba';?><?php echo 'Esto es una prueba' ?><?php echo 'Hemos omitido la última etiqueta de cerrado';
Comentario
PHP
Soporta comentarios 'C', 'C++' y Unix estilo de consola (estilo Perl). Por
ejemplo:
<?php echo 'Esto es una prueba'; // Esto es un comentario estilo c++ de una sola línea /* Esto es un comentario multi-línea si! otra lína de comentarios */ echo 'Esto es otro test'; echo 'Un test final'; # Esto es un comentario estilo consola de una sola línea?>
Los comentarios de estilo "una sola línea" solo comentan hasta
el final de la línea o del bloque actual de código PHP, lo primero que suceda.
Esto implica que el código HTML después de // ... ?> o # ... ?>
Imprimirá ?> para salir del modo PHP y volver a HTML, y // or #
no influyen. Si la directiva de configuración asp_tags está activada, actúa
igual que // %> y # %>. Sin embargo, la etiqueta </script>
no rompe el modo PHP en un comentario de una sola línea.
<h1>Esto es un <?php # echo 'simple';?> ejemplo</h1><p>El encabezado anterior dirá 'Esto es un ejemplo'.</p>
Los comentarios del estilo 'C' finalizan al primer */ que se
encuentre. Asegúrese que no utiliza muchos comentarios del estilo 'C'. Es muy
fácil cometer errores cuando trata de comentar un gran bloque de código.
<?php /* echo 'Esto es una prueba'; /* Este comentario puede causar un problema*/ */?>
Variables
En PHP las variables
se representan con un signo de dólar seguido por el nombre de la variable. El
nombre de la variable es sensible a minúsculas y mayúsculas.
Los nombres de
variables siguen las mismas reglas que otras etiquetas en PHP. Un nombre de
variable válido tiene que empezar con una letra o un carácter de subrayado
(underscore), seguido de cualquier número de letras, números y caracteres de
subrayado.
<?php$var = 'Roberto';$Var = 'Juan';echo "$var, $Var"; // imprime "Roberto, Juan"$4site = 'aun no'; // inválido; comienza con un número$_4site = 'aun no'; // válido; comienza con un carácter de subrayado$täyte = 'mansikka'; // válido; 'ä' es ASCII (Extendido) 228?>
PHP también ofrece otra forma de asignar valores a las variables:
asignar por referencia. Esto significa que la nueva variable simplemente
referencia (en otras palabras, "se convierte en un alias de" ó
"apunta a") la variable original. Los cambios a la nueva variable afectan
a la original, y viceversa.
Para asignar por referencia, simplemente se antepone un signo ampersand
(&) al comienzo de la variable cuyo valor se está asignando (la variable
fuente). Por ejemplo, el siguiente segmento de código produce la salida 'Mi
nombre es Bob' dos veces:
<?php$foo = 'Bob'; // Asigna el valor 'Bob' a $foo$bar = &$foo; // Referenciar $foo vía $bar.$bar = "Mi nombre es $bar"; // Modifica $bar...echo $bar;echo $foo; // $foo también se modifica.?>
Variables variables
A veces es conveniente tener nombres de
variables variables. Dicho de otro modo, son nombres de variables que se pueden
definir y usar dinámicamente. Una variable normal se establece con una
sentencia como:
<?php
$a = 'hola';
?>
$a = 'hola';
?>
Una variable variable toma el valor de una
variable y lo trata como el nombre de una variable. En el ejemplo anterior, hola,
se puede usar como el nombre de una variable utilizando dos signos de dólar. Es
decir:
<?php
$$a = 'mundo';
?>
$$a = 'mundo';
?>
En este momento se han definido y almacenado
dos variables en el árbol de símbolos de PHP: $a, que contiene
"hola", y $hola, que contiene "mundo". Es más, esta
sentencia:
<?php
echo "$a ${$a}";
?>
echo "$a ${$a}";
?>
produce el mismo resultado que:
<?php
echo
"$a $hola";
?>
esto quiere decir que ambas producen el
resultado: hola mundo.
Tipos de Datos
Booleanos
Este es el tipo más simple. Un boolean expresa
un valor de verdad. Puede ser TRUE or FALSE.
Para especificar un literal boolean, use alguna
de las palabras clave TRUE o FALSE. Ambas son insensibles a mayúsculas y minúsculas.
Enteros
Un entero o integer es un número del conjunto ℤ = {..., -2, -1, 0, 1, 2, ...}.
Los integers pueden ser especificados mediante
notación decimal (base 10), hexadecimal (base 16), u octal (base 8),
opcionalmente precedidos por un signo (- o +).
<?php$a = 1234; // número decimal$a = -123; // un número negativo$a = 0123; // número octal (equivalente a 83 decimal)$a = 0x1A; // número hexadecimal (equivalente a 26 decimal)?>
Números de punto flotante
Los números de punto flotante (también conocidos como
"flotantes", "dobles" o "números reales") pueden
ser especificados usando cualquiera de las siguientes sintaxis:
<?php$a = 1.234; $b = 1.2e3; $c = 7E-10;?>
Cadenas
Un string es una serie de caracteres, y por lo
tanto, un carácter es lo mismo que un byte. Es decir, hay exactamente 256
diferentes caracteres posibles. Esto implica también que PHP no tiene soporte
nativo para Unicode.
No hay comentarios:
Publicar un comentario