Archivo de la etiqueta: php

Un servidor web con VirtualBox – Instalando Apache

Después de haber instalado VirtualBox y de haber configurado la red para poder acceder al servidor sin necesidad de escribir su IP, ahora le toca el turno a las aplicaciones “de servidor” propiamente dichas.

Vamos a instalar Apache, PHP y MySql desde tasksel y realizar las pruebas para ver que todo funciona correctamente. En posteriores entregas veremos como instalar algunos módulos directamente desde la consola.

Instalando el servidor desde tasksel

Deberemos arrancar nuestra máquina virtual Linux, y teclear en la línea de comandos

sudo tasksel

accederemos a la pantalla de instalación de paquetes, marcaremos la opción Lamp Server y aceptaremos.

servidor-local-ubuntu-paquete-lamp

Marcando esta casilla instalaremos de una sola vez Apache, PHP y MySQL ya que el sistema se encargará de descargar los paquetes necesarios y de instalar el software.

En un punto de la instalación, el sistema nos solicitará que indiquemos una contraseña para el acceso a la base de datos MySQL. La indicaremos y proseguiremos con la instalación.

servidor-local-ubuntu-password-mysql

Una vez finalizada la instalación, es aconsejable que reiniciemos el equipo para que los servicios se activen correctamente.

Probando el servidor

Antes de continuar instalando mas aplicaciones, vamos a verificar que el servidor esta funcionando correctamente, y de paso, comprobaremos la configuración de la red que hicimos en la entrega anterior.

Desde nuestro equipo anfitrión, abriremos el navegador y teclearemos el nombre del servidor que indicamos en el fichero hosts, que en nuestro caso miservidor y comprobaremos como Apache está funcionando correctamente.

servidor-local-ubuntu-probando-apache

Para comprobar el funcionamiento de php, vamos a crear el típico phpinfo. Lo primero será situarnos en la carpeta donde se almacena el contenido web. Para ello teclearemos:

cd / var/www

Una vez allí, crearemos el fichero con el editor “nano” que viene instalado por defecto:

sudo nano info.php

Se nos abrirá el editor y teclearemos lo siguiente:

<?php
phpinfo();
?>

Despues pulsaremos F2 para guardar, s para sobreescribir y Intro para aceptar el nombre que le hemos asignado. A continuación accederemos al navegador en nuestro equipo anfitrión e indicaremos la url:

http://miservidor/info.php

Si obtenemos esta ventana de información del servidor es que nuestro PHP está funcionando correctamente.

servidor-local-ubuntu-probando-php

Finalmente vamos a acceder por la línea de comandos para ver si MySQL esta bien instalado. Teclearemos:

mysql -u root -p

e indicaremos la contraseña que indicamos en la instalación. Si se nos conecta al servidor MySQL es porque funciona correctamente. Una última prueba será ver las bases de datos actuales. Podemos visualizarlas si tecleamos:

show databases;servidor-local-ubuntu-probando-mysql
Facebooktwittergoogle_plus

PHP 5.3 llega al final de su ciclo de vida

php logoCasi tres años y medio después de su lanzamiento, el equipo de desarrollo de PHP ha anunciado que el ciclo de vida de la versión 5.3 llega a su final, coincidiendo con la publicación de lo que será la última versión, la 5.3.20.

Hasta marzo de 2013, ésta versión de PHP, únicamente recibirá correcciones críticas de seguridad.

Los desarrolladores quieren centrarse en la versión actual, en éste momento la PHP 5.4.10 y por supuesto continuar trabajando en la versión de PHP 5.5, que de la cual ya existe una versión alpha. Veremos que novedades incluye ésta nueva versión.

Facebooktwittergoogle_plus

Error 500 en el proceso de actualización de WordPress

En muchos Hostings, existe un número limitado de recursos que le son asignados a los usuasios. El proceso de actualización de WordPress o cualquier otro sistema, requiere de numerosas operaciones, accesos a la base de datos, etc. Todo ésto conlleva un consumo elevado de memoria tanto la asignada a PHP como de la RAM.

Es posible que durante el proceso de actualización, la aplicación nos genera un Error 500, Internal Server Error. Ésto es producido porque el consumo de recursos de la aplicación supera a los disponibles. Por tanto no es posible realizar la actualización.

Para proceder a actualizar WordPress, deberemos utilizar un cliente de FTP y subir la nueva versión, procediendo tal como se indique en los ficheros de ayuda del paquete a instalar.

Facebooktwittergoogle_plus

Solucionar el error: Cannot modify header information – headers already sent by …

En posible que en alguna ocasión nos enfrentemos al error: Cannot modify header information – headers already sent by (…) producido en WordPress. Deberemos fijarnos en que el archivo que está generando el error. Es lo sabremos observando el mensaje de error que aparece dentro del paréntesis, en el que nos informará del archivo y de la linea en la que se produce el error.

Aunque el numero de linea puede no ser muy fiable, ya que un error de sintaxis en una zona del código, puede derivar en un error en otra zona, si deberemos editar el archivo indicado y fijarnos en lo siguiente:

  • 1 : Que no existan espacios en blanco al principio de la página y justo antes de que empiece el codigo
  • 2 : Que no existan espacios en blanco al final de la página, cuando se termina el código.
  • 3 : Que exista una etiqueta de cierre y de apertura de php sin código HTML entre ellas.

wordpress error headers

En el caso de encontrar alguna de éstos supuestos, la solución es sencilla. En los casos 1 y 2, simplemente deberemos borrar los espacios en blanco, y en el caso 3 eliminaremos las etiquetas  “?>” y “<?php“.

Facebooktwittergoogle_plus

La variable $_SERVER de PHP

La variable $_SERVER es un tipo de variable especial de php, denominada “supervariable”. Es capaz de comportarse como una variable global, sin necesidad de declararla como tal.

Las variables superglobales tienen un nombre preasignado que no puede modificarse y sirven para recoger información muy especifica.

Las variables superglobales son:

$GLOBALS, $_SERVER, $_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENV

Como obtener la información de $_SERVER

La variable $_SERVER es creada por el servidor web. En ella almacena información, creando un array.

Para recorrer dicho array, podemos crear un scrip que muestre toda la información:

<?
  foreach($_SERVER as $nombre_campo => $valor){
    $asignacion = "$" . $nombre_campo . "= . $valor . ";
    echo "<br>" . $asignacion;
  }
?>

Indices de $_SERVER

A continuación os mostramos algunos de los índices mas importantes:

REQUEST_URI : Nos devuelve la url quitando la parte del dominio

DOCUMENT_ROOT : Obtenemos el directorio raíz del servidor.

HTTP_HOST : Devuelve el nombre del Host (dominio).

HTTP_USER_AGENT : Aquí se guarda el nombre del navegador que usa el cliente. Es muy utilizado para que la página cargue las hojas de estilo en función del navegador usado.

PHP_SELF : Obtenemos el nombre del script (archivo php) que se está ejecutando actualmente.

REMOTE_ADDR : Vemos la dirección IP remota.

SCRIPT_FILENAME : Obtenemos la ruta completa del script en el servidor

HTTP_REFERER : Muestra desde que página accediste a la actual.

REQUEST_METHOD : Obtenemos el tipo de petición (GET o POST)

La lista es bastante extensa, por lo que si quieres más información puedes acceder a la página php.net

Facebooktwittergoogle_plus

Ver las funciones deshabilitadas de php

Podemos de manera muy sencilla visualizar todas las funciones que nuestro php.ini tiene deshabilitadas.

Deberemos abrir un terminal y escribir:

cat /ruta/php.ini | grep disable_functions

Deberemos sustituir ruta, por la ubicación exacta de nuestro fichero php.ini.

Facebooktwittergoogle_plus

Bloquear la ejecución de código php con Apache

Suele ocurrir que después de instalar un CMS o tienda online, alguna de sus carpetas necesiten acceso total, como generalmente ocurre en las carpetas de las imágenes.

Ésta situación puede ser aprovechada por los atacantes para subir scripts o malware. Nosotros, como administradores del sitio, debemos tener la precaución de bloquear todos estos accesos no autorizados.

Podemos hacerlo por medio de un fichero .htaccess o vhosts.conf, pero una manera muy sencilla añadiendo un fichero .conf al directorio de conf.d de Apache.

Lo primero será acceder al directorio conf.d. Sus ubicaciones pueden ser:

/etc/apache2/conf.d
 /etc/httpd/conf.d

Escribiremos lo siguiente y lo guardaremos con el nombre que queramos, pero con extensión .conf dentro de la carpeta conf.d de Apache

< LocationMatch “/imagenes/.*.(php3?|phtml)$”>
 Order Deny,Allow
 Deny from All
 < /LocationMatch>

Sustituiremos imagenes por la ruta a la carpeta que queramos securizar.

Facebooktwittergoogle_plus

Mostrar el número de usuarios online en WordPress

Podemos de manera muy simple, mostrar el número de usuarios online que se encuentran en nuestro blog de WordPress.

Lo primero será insertar la función que realiza los cálculos, dentro del fichero de funciones llamado functions.php, que se encuentra en la carpeta wp-includes:

function usuarios_online(){
global $wpdb;
$online = $wpdb- >prefix . ‘who_is_online’;
$num_invitados = ‘SELECT COUNT(*) AS user_count FROM ‘ . $online . ‘ WHERE user_id IS NULL;’;
$num_registrados = ‘SELECT COUNT(user_id) AS user_count FROM ‘ . $online . ‘;’;
$result = $wpdb- >get_row($num_registrados);
$total_registrados = $result- >user_count;
$result2 = $wpdb- >get_row($num_invitados);
$total_invitados = $result2- >user_count;
return $total_registrados + $total_invitados;
}

Con ésta función calculamos el total de usuarios (registrados + invitados). A continuación, añadiremos el código necesario donde queramos que se muestren los datos. Deberemos escribir:

Usuarios online: <?php echo usuarios_online(); ?>
Facebooktwittergoogle_plus

Corregir el error Deprecated: Function eregi() is deprecated…

Las funciones ereg() y eregi() de php, han sido sustituidas a partir de la versión 5.3.0 y como se puede ver en la ayuda de php.net, si buscamos ereg o eregi nos aparece una advertencia indicando que la función está Obsoleta (Deprecated) y su uso está desaconsejado.

Estas funciones realizan una búsqueda de un texto dado en una cadena y su estructura es la siguiente:

ereg($patron, $cadena_texto); eregi($patron, $cadena_texto);

Para eliminar el aviso, deberemos sustituir dichas funciones por:

preg_match('/'.$patron.'/', $cadena_texto);

Que realiza la misma tarea. Lo único que debemos tener en cuenta es que ahora, el texto a buscar dentro de la cadena deberá indicarse entre barras inclinadas.

Facebooktwittergoogle_plus

Aumentar el tamaño para los adjuntos de webmail

Existe una regla en la que se especifica el tamaño máximo para los adjuntos. Para poder modificarla, deberemos acceder como root al sistema mediante SSH y con nuestro editor preferido acceder al fichero php.ini

Buscaremos la variable post_max_size y modificaremos el tamaño para que se ajuste a nuestras necesidades. Por ejemplo si queremos que el máximo sean 15 Mb escribiremos:

post_max_size =15M

Guardaremos los cambios y reiniciaremos el servicio de apache

service httpd restart

 

Facebooktwittergoogle_plus