Siempre que terminamos de configurar un servidor LAMP (Linux+Apache+MySQL+PHP en general), es necesario hacer una prueba para verificar su correcto funcionamiento. Por ello, en este artículo dejo un script PHP para interactuar con una base de datos MySQL, junto con un script para crear una base de datos MySQL de prueba, como para tener siempre a mano.



No voy a explicar los pasos de instalación y configuración de un servidor LAMP, ya que se encuentra ampliamente documentado en miles de Wikis, foros y blogs. Para el caso de Debian existe una documentación muy completa en su Wiki oficial: LAMP, Linux Apache MySQL PHP.

¿Cómo verificar el correcto funcionamiento luego de instalar un servidor LAMP?

Primero es necesario crear una base de datos de prueba. El siguiente script crea una base de datos llamada "pepe" que contiene una única tabla con dos campos: un campo numérico "id", que funciona como clave única para la fila; y un campo "texto" que utilizo para guardar cualquier texto.

CREATE DATABASE IF NOT EXISTS pepe;      

USE pepe;

CREATE TABLE IF NOT EXISTS prueba (
        id BIGINT AUTO_INCREMENT,  
        texto VARCHAR(255),        
        PRIMARY KEY(id)            
) Type=InnoDB;

Guardar el contenido del script en un archivo db.sql:

root@debian6:~# cat db.sql 
CREATE DATABASE IF NOT EXISTS pepe;      

USE pepe;

CREATE TABLE IF NOT EXISTS prueba (
        id BIGINT AUTO_INCREMENT,  
        texto VARCHAR(255),        
        PRIMARY KEY(id)            
) Type=InnoDB;

Utilizando el cliente mysql desde línea de comandos, conectarse al servidor MySQL local con credenciales de administrador ("root"):

root@debian6:~# mysql -u root -p
Enter password:                               
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 95                           
Server version: 5.1.73-1 (Debian)                        

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

Ejecutar el script db.sql para instalar la base de datos de prueba:

mysql> source db.sql;
Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected, 1 warning (0.00 sec)

Comprobar que la estructura de la tabla "prueba" se haya creado correctamente ejecutando describe prueba:

mysql> describe prueba;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| texto | varchar(255) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

Cerrar la conexión al motor de bases de datos:

mysql> quit
Bye
root@debian6:~#

Contando con la base de datos de prueba instalada, es necesario crear un script para interactuar con la misma. El siguiente script PHP se conecta a la base de datos "pepe", inserta una nueva fila en la tabla "prueba", y finalmente muestra el contenido de la misma:

<?php

echo "<h4>PRUEBA</h4>";

// Parámetros de conexión a la base de datos
$host = "localhost";
$db = "pepe";
$user = "root";
$pass = "root";
$link = "";

// Conectar al servidor MySQL
if (!$link = mysql_connect($host,$user,$pass)) {
    exit("Imposible conectar a la base de datos.");
}

// Seleccionar base de datos
if (!mysql_select_db($db,$link)) {
    exit("Imposible seleccionar base de datos: ".mysql_error($link));
}

// Insertar una nueva fila en la tabla "prueba"
/*
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| texto | varchar(255) | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
*/
$date = new DateTime("NOW");
$fdate = $date->format(DateTime::RFC850);
$query = "INSERT INTO prueba (texto) VALUES ('$fdate');";
if (!mysql_query($query,$link)) {
    exit("Error al insertar en la base de datos: ".mysql_error($link));
}

// Seleccionar datos de la tabla "pepe"
$query = "SELECT id,texto FROM prueba;";
if (!$result = mysql_query($query,$link)) {
    exit("Error al seleccionar datos de la base de datos: ".mysql_error($link));
}

// Imprimir tabla
?>
<p>Ultimos Accesos:</p>
<table style="border: 1px solid #fff;">
<tr><th>ID</th><th>Fecha</th></tr>
<?php

while ($row = mysql_fetch_array($result)) {
    echo "<tr><td>" . $row['id'] . "</td><td>" . $row['texto'] . "</td></tr>";
}

?>
</table>
<?php

// Cerrar conexión MySQL
mysql_close();

?>
<p>-- FIN --</p>

 

En Debian y derivados, el servidor Web Apache utiliza el directorio /var/www/ como directorio de trabajo del virtual host por defecto.

Crear el directorio /var/www/prueba/:

root@debian6:~# cd /var/www/
root@debian6:/var/www# mkdir prueba
root@debian6:/var/www# cd prueba
root@debian6:/var/www/prueba#

Crear el archivo index.php:

root@debian6:/var/www/prueba# nano index.php

Copiar el contenido anterior y guardar el script PHP. Notar que en el script se configuran las variables de acceso al servidor MySQL, editar según corresponda.

Asegurarse de que el servidor Apache (corre con el usuario www-data en Debian y derivados) tenga permisos de lectura y ejecución sobre el directorio /var/www/prueba/ y el script index.php.

Finalmente es posible acceder al servidor Web desde un navegador. Por ejemplo, si la dirección IP del servidor Web es 192.168.122.245, acceder a la URL http://192.168.122.245/prueba:

En caso de errores es posible revisar los logs de accesos (/var/log/apache2/access.log) y de errores (/var/log/apache2/error.log) del servidor Web Apache. Algunos errores que pueden aparecer, a modo de ejemplo:

root@debian6:/var/www/prueba# tail /var/log/apache2/error.log
[Mon May 12 15:46:41 2014] [error] [client 192.168.122.1] PHP Parse error:  syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /var/www/prueba/index.php on line 5
[Mon May 12 15:54:59 2014] [error] [client 192.168.122.1] PHP Warning:  mysql_connect(): Access denied for user 'root'@'localhost' (using password: YES) in /var/www/prueba/index.php on line 13
[Mon May 12 16:11:58 2014] [error] [client 192.168.122.1] PHP Parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/prueba/index.php on line 52
[Mon May 12 17:18:56 2014] [error] [client 192.168.122.1] (13)Permission denied: access to /prueba/index.html denied

Referencias

MySQL 5.7 Reference Manual

PHP Manual

Apache HTTP Server Version 2.4 Documentation

¡Espero que les sirva!


Tal vez pueda interesarte


Compartí este artículo