Archivos por Etiqueta: php

Debian Php Apache Mysql Phpmyadmin Ftp

Si bien no es muy complicado instalar los componentes para dejar funcionando un servidor web casero, las guías que hay no son muy actuales y el nombre de algunos de los paquetes necesarios cambiaron o cambian según el tipo de distribución base que se esté utilizando.

El sistema es Debian Squeeze con los siguientes repositorios

deb http://ftp.debian.org/debian squeeze main non-free contrib
deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

Instalación de Apache
# apt-get install apache2

Instalación de Php5 con componentes necesarios para la integración con otros servicios
# apt-get install php5 libapache2-mod-php5 php5-common php5-mysql

Instalación de Mysql con componentes necesarios para la integración con otros servicios
# apt-get install mysql-common mysql-client mysql-server

Instalación de PhpMyadmin
# apt-get install phpmyadmin

Con estos pasos ya están corriendo los servicios básicos, para probarlo primero es necesario reiniciar Apache
# /etc/init.d/apache2 restart

Probar Apache
En el navegador teclear

http://localhost

Debería mostrar una página con el texto “It works!”.

Probar Php
# vim /var/www/php.php

Colocamos Phpinfo, guardamos y cerramos
En el navegador teclear

http://localhost/php.php

Debería mostrar una página con información sobre la versión de Php que se encuentra corriendo.

Instalación de un servidor Ftp

Cabe aclarar que la intención es usar estos servicios en un entorno de prueba o de desarrollo donde la seguridad que se maneja es mínima o ninguna. La intención es tener los recursos disponibles para probar sitios web mientras son desarrollados. Como detalle en esta guía no se explica como abrir puertos en el router para que el sitio alojado en nuestro servidor puede ser consultado desde afuera. El servidor que vamos a utilizar es Vsftpd.

Instalación de Vsftpd
# apt-get install vsftpd

Configuracion de Vsftpd
# vim /etc/vsftpd.conf

Las siguientes lineas deben estar descomentadas (sacarles el “#”) y con los siguientes valores:

listen=YES
local_enable=YES
write_enable=YES
local_umask=022

Es necesario también agregar al final del archivo la siguiente linea.

local_root=/var/www

Esto lo que hace es cambiar el directorio por defecto una vez que estamos conectados, al directorio /var/www. Este directorio es desde donde el servidor Apache toma los scripts.

Reiniciar el servicio Vsftpd
# /etc/init.d/vsftpd restart

Con esta configuración básica, los archivos que subamos a nuestro servidor ftp pueden ser ejecutados por nuestro servidor Apache,

En el sistema (el que está corriendo el servidor Ftp) es necesario que estén creados los usuarios con los cuales nos vamos a conectar, para este caso asumimos que existe el usuario “usuario1” con la contraseña “usuario1”. El usuario Root no puede loguearse por Ftp.

Desde el equipo cliente:

De no disponer de un cliente ftp, podemos instalar uno muy poderoso que trabaja a través de una terminal, su nombre es Lftp.

Instalación de Lftp
# apt-get install lftp

Ingresamos desde una terminal a nuestro servidor ftp, para el ejemplo tomamos que la ip del servidor es 192.168.1.2
lftp -u usuario1 192.168.1.2

Se nos va a solicitar la clave para el usuario “usuario1”, en nuestro ejemplo la contraseña es “usuario1”.

Algunos comandos que podemos utilizar:

ls Para que nos muestre los archivos y directorios junto con sus permisos.
pwd Para que nos muestre en que directorio estamos parado
cd Para subir de directorio
cd .. Para bajar de directorio
mget Para traer un archivo desde el servidor a la ubicación donde estamos posicionados en nuestro equipo
mput Para subir un archivo desde la ubicación en la que estamos posicionados al servidor
lcd Podemos cambiar el directorio en el cual estamos posicionados en nuestro equipo sin necesidad de cerra la sesión Ftp.

Cada vez que modificamos algo en el archivo vftpd.conf es necesario reiniciar el servicio para que este tome la nueva configuración. También es necesario cerrar la sesión Ftp si estuviéramos conectados y volvernos a conectar.

Definir funciones en php

Se dice que las funciones se deben definir en otro script y mediante include o require para poder usarlos. De todas maneras igual una función puede definirse en el mismo script donde se llama porque php primero lee todo el código y no lo implementa hasta que es llamado.

Otra cosa que se puede hacer es tener primero el lugar donde se llama la función y después definida la función por lo mismo que se dijo antes.

Algo que me dio problemas, y que no está explicado en muchos lados, es cuando se define la función dentro de un if, o un while. Lo mejor sería definir la función al final del todo y asegurarse que no esté dentro de nada para que no de problemas.

header(“location:pagina.html”); – php

header(“location:pagina.html”);

Cuándo se trabaja con headers hay que tener dos cosas muy en cuenta, una es que todos los echo que se pongan ya sea para pruebas o para lo que sea, no se van a ver, y es porque se ejecuta en el servidor, y cuando llega, ya llega la siguiente página que se llama.

De todas maneras, un header da un error si hay un echo en la misma sentencia o medio cerca, me pasó de no darme el error si la linea del echo esta lejos de la linea del header.

Asimismo dichos echos no se van a ver, así que no tiene sentido que se ejecuten.

Php volver para atrás y tener el valor de los campos

Un problema común que nos encontramos al momento de crear formularios, es que si falla la validación de algún campo es necesario recargar el mismo, por lo que según nuestra configuración los campos pueden aparecer en blanco y es necesario volver a cargarlos. Lo que si estamos haciendo pruebas es bastante engorroso sobre todo con formularios largos.
Este problema surge porque Php se ejecuta del servidor y no en el cliente, osea en el navegador. Sería como estar jugando un juego de estrategia por turnos.
La validación no se realiza en tiempo real, sino que es necesario llamar a otra página o a ella misma para que la misma se realice.

Otra opción que tenemos es validar los campos con Javascript, pero esto tiene básicamente dos problemas, el primero es que los navegadores pueden bloquearlos, y el segundo es que pueden saltarse la validación lo que implica que estaríamos ingresando datos no comprobados a nuestra base de datos. En este caso lo mejor sería realizar una validación con Javascript y una segunda validación con PHP.

La mejor opción para validar con PHP y mantener el valor de los campos en caso de que la validación falle es llamar a la misma página y realizar la validación al comienzo de la misma, en los campos del formulario como opción “value” se utiliza la variable de PHP.

get y header location en php

No es que tengan que ver uno con el otro, es el echo de que con los dos encontré problemas al momento de usarlos.

Get solo fue un error tal vez común de sintaxis, la sintaxis es:

<a href=”pagina.php?variable1=valor1&variable2=valor2

el problema era que en ves de poner un “&” entre las variables, le volvía a poner un “?”, como resultado de esto, los variables pasadas por get llegaban vacías, o me mostraba el valor de dos variables, útil tenerlo en cuenta.

El problema de header location es que no se puede tener ningún “echo” antes de utilizar el header o te dara un error de “*Warning*: Cannot modify header information – headers already sent by (output started at ruta_de_la_pagina:1) in ruta_de_la_pagina on line x “, tampoco puede haber una linea en blanco antes de utilizarlo o dará el mismo error.

En mi caso, y por comodidad, ya aproveché a ponerlo en una página nueva, y usar un include(“nombre”), pero hay que tener en cuenta que si hay un echo antes pasa exactamente lo mismo.

Opciones de archivos en php

En mi intento por armar mi primer proyecto en php, me encontré en la necesidad de crear carpetas, crear archivos, modificarlos y guardarlos.

con

mkdir (“./$nombre_de_carpeta”, 0777);

creo una carpeta en el directorio raíz y le agrega permisos 0777, este ultimo punto es muy importante.

si no se pone un “.” antes de / te da un error de permiso denegado en cambio si se quiere poner en otra carpeta hay que poner toda la ruta.

fopen crea un archivo o lo abre en caso de existir

fput sirve para ingresar lineas al documento

fclose guarda los cambios y cierra el documento.

Al momento de abrir un documento se puede elegir entre distintos permisos.

R –> solo lectura

R+ –> lectura y escritura

W  –> solo escritura

W+ –> escritura lectura

A –> permite escribir pero en caso de existir no lo sobreescribe

A+ –> permite leer y escribir pero si existe no borra el contenido

La sintaxis del fopen sería:

$variable=fopen($archivo, “a+”);

fclose ($variable);