LAMP: Linux, Apache MySQL y PHP/Perl








LAMP: Linux, Apache, MySQL y PHP/Perl


Diego Chaparro (dchaparro@acm.org)

5 de Abril de 2006








Preámbulo


Este documento no pretende ser una guía completa de todas las tecnologías explicadas, sino simplemente una pequeña guía basada en notas que sirva como introducción a cada uno de los entornos aquí descritos.


Este documento no está libre de errores y está en continuo desarrollo.


Licencia


Este documento se distribuye bajo la licencia Creative Commons Attribution-ShareAlike. Para obtener la licencia completa véase:


http://creativecommons.org/licenses/by-sa/2.1/es/









Índice de contenido

1 Introducción 3

1.1 GNU/Linux 3

1.2 Apache 3

1.3 PHP 4

1.4 Perl 4

1.5 MySQL 5

1.6 Herramientas adicionales 5

2 Linux 6

2.1 Sistema de ficheros 6

2.2 Comandos básicos 7

3 Apache 7

3.1 HTTP 7

4 PHP 9

4.1 Referencia del lenguaje 9

4.2 Más características 15

4.3 Editores 17

4.4 Conexión con MySQL 17

5 Perl 18

5.1 Referencia del lenguaje 18

5.2 Más características 22

5.3 Conexión con MySQL 26

6 MySQL 26

6.1 Permisos de acceso 26

6.2 Acceso de usuarios 27

6.3 Creación de usuarios 27

6.4 Restaurar contraseña del administrador 28

6.5 Operaciones habituales 28

6.6 Tipos de datos 29

7 Herramientas adicionales 30

7.1 CVS 30

7.2 SSH 31

8 Referencias 32













1 Introducción

1.1 GNU/Linux













1.2 Apache






1.3 PHP


Características generales:












1.4 Perl

      Características generales:









1.5 MySQL






1.6 Herramientas adicionales

      1. CVS











      1. SSH







2 Linux


2.1 Sistema de ficheros







2.2 Comandos básicos

ls /tmp/




cd /tmp/



pwd



mkdir /tmp/dir1



rm /tmp/prueba.txt



cp /usr/prueba.txt /tmp/



mv /usr/prueba2.txxt /tmp/



less /tmp/prueba2.txt


3 Apache

3.1 HTTP








      1. GET

  1. Se abre un socket con el host host.com, puerto 80 que es el puerto por defecto para HTTP.


  1. Se envía un mensaje en el estilo siguiente:


  1. La respuesta del servidor está formada por encabezados seguidos del recurso solicitado, en el caso de una página web:



      1. POST









      1. Códigos de respuesta









4 PHP


4.1 Referencia del lenguaje


      1. Sintaxis



<?php

CODIGO_PHP

?>



# Comentario

// Comentario

/* Comentario */








      1. Tipos de datos










array (5 => 1, 12 => 2);

array (5,3,2,1,0);


foreach ($matriz as $i => $valor) {

print $i;

}


new foo;











(int) $var Convierte la variable var a tipo entero

(string) $var Convierte la variable var a tipo cadena



      1. Variables






global $a; // La variable está definida en un contexto superior.











      1. Expresiones

++$a

      1. Operadores


Estos son los operadores más habituales:








      1. Estructuras de control


Las estructuras de control más usadas son las siguientes:



if (expr)

				sentencia

if (expr) {

				sentencia
			} else {
				sentencia
			}




if (expr) {

sentencia

} elseif ($a == $b) {

sentencia
} else {

sentencia

}


if (expr):

sentencia

sentencia

elseif (expr):

sentencia

sentencia

else:

sentencia

endif


while (expr) sentencia


while (expr) {

sentencia

}


do {

sentencia

} while (expr);



for (expr1; expr2; expr3) {

sentencia

}


expr1 se evalúa al principio del bucle

expr2 se evalúa al comienzo de cada iteración, si es TRUE el

bucle continúa y sino el bucle finaliza

expr3 se evalúa al final de cada iteración



foreach (expresion_array as $value) sentencia

foreach (expresion_array as $key => $value) sentencia



Cuando se ejecuta desde una función termina inmediatamente la

ejecución de la función y devuelve su argumento como valor de la

función



Se utilizan para incluir y evaluar el archivo especificado.



      1. Funciones




function takes_array ( $input )



function takes_array ( & $input )



function takes_array ( $input = “foo” )



return ($resultado)



      1. Clases y objetos









class Contador {

var $numero;


function incrementar (){

$this->numero += 1;

}

}



$objeto = new Contador;



$objeto->incrementar();



class Contador_dec extends Contador {


function decrementar (){

$this->numero -= 1;

}

}



class Contador_init extends Contador {


function Contador_init ( $num ){

$this->numero = $num;

}

}


      1. Excepciones


En PHP4 no hay control de excepciones :-(


Pero si está incluido en PHP5 :-)





4.2 Más características


      1. Autenticación HTTP con PHP



header('WWW-Authenticate: Basic realm="My Realm"');

header('HTTP/1.0 401 Unauthorized');



<?php

if (!isset($_SERVER['PHP_AUTH_USER'])) {

header('WWW-Authenticate: Basic realm="My Realm"');

header('HTTP/1.0 401 Unauthorized');

echo 'Text to send if user hits Cancel button';

exit;

} else {

echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";

echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as

your password.</p>";

}

?>


      1. Cookies













<?php

$valor = 'valor de la cookie';

setcookie("CookieDePrueba", $valor);

/* o fijar que expire en 1 hora */

setcookie("CookieDePrueba", $valor, time()+3600);

?>



<?php

//Imprime una cookie individual

echo $_COOKIE["CookieDePrueba"];

echo $HTTP_COOKIE_VARS["CookieDePrueba"];

// Para ver todas las cookies

print_r($_COOKIE);

?>


      1. Funciones de fecha y hora


Estas son algunas de las funciones de fecha y hora más utilizadas:



// Imprime algo como: Monday 15th of August 2005 03:12:46 PM

echo date('l dS \of F Y h:i:s A');

// Imprime: July 1, 2000 is on a Saturday

echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));



$hoy = getdate();

print_r($hoy);



echo date ("M-d-Y", mktime(0, 0, 0, 12, 32, 1997))





4.3 Editores


Hay muchos editores de texto y Entornos Integrados de Desarrollo que se pueden usar para crear, editar, y organizar archivos PHP. Contar con un editor que resalte la sintaxis de PHP puede ser de mucha ayuda. Hay una lista parcial de éstos en [3].


Pero en realidad cualquier editor de texto es suficiente para poder hacerlo.


4.4 Conexión con MySQL



$link= mysql_connect(“localhost”, “usuario”, “password”);



$bbdd= mysql_select_db('nombre_bbdd', $link) or die('Error');



$query = 'SELECT * FROM mi_tabla';

$resultado = mysql_query($query, $bbdd) or die('Error: ' .

mysql_error());



mysql_free_result($resultado);



mysql_close($link);












5 Perl


5.1 Referencia del lenguaje


      1. Sintaxis






      1. Tipos de datos




"camel"



56



7.53



("camel", "llama", "owl")

(42, “valor”)









			("apple", "red", "banana", "yellow")

			( apple  => "red", banana => "yellow",)
      1. Variables













      1. Operadores


Estos son los operadores más habituales: