Vous êtes sur la page 1sur 43

Captulo 1.

Introduccin
Qu es PHP?
PHP (acrnimo de "PHP: Hypertext Preprocessor") es un lenguaje de "cdigo abierto" interpretado, de alto nivel, embebido en pginas HT ! y ejecutado en el servidor" #na respuesta corta y concisa, pero, $%u& signi'ica realmente( #n ejemplo nos aclarar las cosas: <html>
<head> <title>Ejemplo Php</title> </head> <body> <?php echo "Hola, SISTEMASUNI; soy un script en PHP!"; ? </body> </html>

Puede apreciarse %ue no es lo mismo %ue un script escrito en otro lenguaje de programacin como Perl o )" *n ve+ de escribir un programa con muc,os comandos para crear una salida en HT !, escribimos el cdigo HT ! con cierto cdigo PHP embebido (incluido) en el mismo, %ue producir cierta salida (en nuestro ejemplo, producir un texto)" *l cdigo PHP se incluye entre eti%uetas especiales de comien+o y 'inal %ue nos permitirn entrar y salir del modo PHP" !o %ue distingue a PHP de la tecnolog-a .avascript, la cual se ejecuta en la m%uina cliente, es %ue el cdigo PHP es ejecutado en el servidor" /i tuvi&semos un script similar al de nuestro ejemplo en nuestro servidor, el cliente solamente recibir-a el resultado de su ejecucin en el servidor, sin ninguna posibilidad de determinar %u& cdigo ,a producido el resultado recibido" *l servidor 0eb puede ser incluso con'igurado para %ue procese todos los arc,ivos HT ! con PHP" !o mejor de usar PHP es %ue es extremadamente simple para el principiante, pero a su ve+, o'rece muc,as caracter-sticas avan+adas para los programadores pro'esionales" 1o sienta miedo de leer la larga lista de caracter-sticas de PHP, en poco tiempo podr empe+ar a escribir sus primeros scripts" )on las primeras 2 versiones de PHP, PHP 3 y PHP 4, se ,ab-a conseguido una plata'orma potente y estable para la programacin de pginas del lado del servidor" *stas versiones ,an servido de muc,a ayuda para la comunidad de desarrolladores, ,aciendo posible %ue PHP sea el lenguaje ms utili+ado en la 0eb para la reali+acin de pginasavan+adas" /in embargo, todav-a exist-an puntos negros en el desarrollo PHP %ue se ,an tratado de solucionar con la versin 5, aspectos %ue se ec,aron en 'alta en la versin 4, casi desde [Escribir texto] Pgina 6

el d-a de su lan+amiento" 1os re'erimos principalmente a la programacin orientada a objetos (P77) %ue, a pesar de %ue estaba soportada a partir de PHP3, slo implementaba una parte muy pe%ue8a de las caracter-sticas de este tipo de programacin" 9lgunas caracter-sticas nuevas de PHP5 son: 1ombres prede'inidos para los m&todos constructores ::construct() y destructores ::destruct(), odi'icadores de acceso como (public, private y protected a propiedades y m&todos), inter'aces, 7perador instanceo', 9tributos y m&todos static, )lases y m&todos abstractos, )onstantes de clase, ::autoload(), )lonado de objetos, etc; <ueno, creo %ue ya %uedaron claros algunos conceptos as- como las nuevas mejoras de PHP5"

Qu se puede hacer con PHP?


PHP puede ,acer cual%uier cosa %ue se pueda ,acer con un script )=>, como procesar la in'ormacin de 'ormularios, generar pginas con contenidos dinmicos, o enviar y recibir coo?ies" @ esto no es todo, se puede ,acer muc,o ms" *xisten tres campos en los %ue se usan scripts escritos en PHP"

Scripts del lado del servidor " *ste es el campo ms tradicional y el principal 'oco de trabajo" /e necesitan tres cosas para %ue esto 'uncione" *l int&rprete PHP ()=> mdulo), un servidor 0eb y un navegador" *s necesario correr el servidor 0eb con PHP instalado" *l resultado del programa PHP se puede obtener a trav&s del navegador, conectndose con el servidor 0eb" Scripts en la lnea de comandos" Puede crear un script PHP y correrlo sin ningAn servidor 0eb o navegador" /olamente necesita el int&rprete PHP para usarlo de esta manera" *stos scripts tambi&n pueden ser usados para tareas simples de procesamiento de texto" Escri ir aplicaciones de inter!a" #r$!ica" Probablemente PHP no sea el lenguaje ms apropiado para escribir aplicaciones gr'icas, pero si conoce bien PHP, y %uisiera utili+ar algunas caracter-sticas avan+adas en programas clientes, puede utili+ar PHPB=TC para escribir dic,os programas" Tambi&n es posible escribir aplicaciones independientes de una plata'orma" PHPB=TC es una extensin de PHP, no disponible en la distribucin principal"

PHP puede ser utili+ado en cual%uiera de los principales sistemas operativos del mercado, incluyendo !inux, muc,as variantes #nix (incluyendo HPB#D, /olaris y 7pen</E), icroso't Findo0s, ac 7/ D, G>/) 7/ y probablemente alguno ms" PHP soporta la mayor-a de servidores 0eb de ,oy en d-a, incluyendo 9pac,e, icroso't >nternet >n'ormation /erver, Personal Feb /erver, 1etscape e iPlanet, 7reilly Febsite Pro server, )audium, Ditami, 7mniHTTPd y muc,os otros" PHP tiene mdulos disponibles para la mayor-a de los servidores, para a%uellos otros %ue soporten el estndar )=>, PHP puede usarse como procesador )=>" Ee modo %ue, con PHP tiene la libertad de elegir el sistema operativo y el servidor de su gusto" Tambi&n tiene la posibilidad de usar programacin procedimental o [Escribir texto] Pgina 2

programacin orientada a objetos" 9un%ue no todas las caracter-sticas estndar de la programacin orientada a objetos estn implementadas en la versin actual de PHP, muc,as bibliotecas y aplicaciones grandes (incluyendo la biblioteca P*9G) estn escritas -ntegramente usando programacin orientada a objetos" )on PHP no se encuentra limitado a resultados en HT !" *ntre las ,abilidades de PHP se incluyen: creacin de imgenes, arc,ivos PEH y pel-culas Hlas, (usando libs0' y ing) sobre la marc,a" Tambi&n puede presentar otros resultados, como DHT y arc,ivos D !" PHP puede auto generar &stos arc,ivos y almacenarlos en el sistema de arc,ivos en ve+ de presentarlos en la pantalla" Iui+s la caracter-stica ms potente y destacable de PHP es su soporte para una gran cantidad de bases de datos" *scribir un inter'a+ v-a 0eb para una base de datos es una tarea simple con PHP" !as siguientes bases de datos estn soportadas actualmente: 9dabas E >ngres 7racle (7)>J and 7)>K) d<ase >nter<ase 7vrimos *mpress Hront<ase Postgre/I! HilePro (readBonly) m/I! /olid Hyper0ave Eirect /B/I! /ybase >< E<2 y/I! Lelocis >n'ormix 7E<) #nix dbm 9dicionalmente, PHP soporta 7E<) (el *stndar 9bierto de )onexin con <ases de Eatos), asi %ue puede conectarse a cual%uier base de datos %ue soporte tal estndar" PHP tambi&n cuenta con soporte para comunicarse con otros servicios usando protocolos tales como !E9P, > 9P, /1 P, 11TP, P7P3, HTTP, )7 (en Findo0s) y muc,os otros" Tambi&n se pueden crear soc?ets puros" PHP soporta FEED para el intercambio de datos entre lenguajes de programacin en 0eb" @ ,ablando de interconexin, PHP puede utili+ar objetos .ava de 'orma transparente como objetos PHP @ la extensin de )7G<9 puede ser utili+ada para acceder a objetos remotos" PHP tiene unas caracter-sticas muy Atiles para el procesamiento de texto, desde expresiones regulares P7/>D extendidas o tipo Perl ,asta procesadores de documentos D !" Para procesar y acceder a documentos D !, soportamos los estndares /9D y E7 " Puede utili+ar la extensin D/!T para trans'ormar documentos D !"

[Escribir texto]

Pgina 3

Captulo %. Instalacin
Consideraciones #enerales de instalacin
9ntes de instalar PHP, necesitas saber por%ue utili+arlo" *xisten tres campos principales en donde PHP es usado:

/cripts en la parte del servidor /cripts en l-nea de comandos 9plicaciones gr'icas clientes

*ste es el campo ms tradicional y el principal campo de trabajo" /e necesitan tres cosas para %ue esto 'uncione" *l anali+ador PHP ()=> mdulo), un servidor 0eb y un navegador" Eependiendo de la versin de sistema operativo %ue utilice, probablemente tenga un servidor 0eb (9pac,e en !inux >>/ en Findo0s)" Tambi&n se puede al%uilar espacio Feb en una empresa %ue o're+ca este servicio" Ee esta manera no se necesita instalar nada, solamente escribir los scripts PHP, subirlos al espacio al%uilado y ver el resultado en el navegador" Tienes dos maneras de utili+ar PHP, si instala el servidor y PHP" *xisten mdulos directos (tambi&n llamados /9P>) para muc,os servidores Feb, como 9pac,e, icroso't >nternet >n'ormation /erver, 1etscape" /i PHP no soporta un mdulo para tu servidor Feb, siempre se puede usar como binario )=>" *sto signi'ica %ue el servidor se con'igura para usar el ejecutable para l-nea de comandos de PHP php.exe en Findo0s en el procesado de peticiones de 'ic,eros PHP" )on PHP tambi&n se puede escribir aplicaciones gr'icas usando la extensin PHPB =TC" *sta es una 'orma totalmente distinta de utili+ar PHP %ue cuando se utili+a para escribir pginas Feb, ya %ue no se genera cdigo HT ! sino %ue se trabaja con ventanas y objetos dentro de las mismas"

Instalacin de PHP& con 'pache en (indo)s


)uando se est programando una pgina o aprendiendo a programar para ,acer pruebas, muc,os usuarios %uieren %ue PHP 'uncione de una 'orma local, es decir, %ue %uieren %ue sus scripts 'uncionen en su propio ordenador sin necesidad de tener %ue subir los arc,ivos a un servidor (gratuito o de pago)" 9s- %ue veremos como instalar 'pache * PHP en tu ordenador"

Instalando 'pache
>nstalaremos la versin 9pac,e 6"3"34 y PHP 5"M"3" *mpecemos por el principio, lo primero, descrgate la versin de 9pac,e 6"3"34 en su versin para Findo0s" Para ello podemos acceder por la siguiente #G!: http+,,httpd.apache.or#,do)nload.c#i

[Escribir texto]

Pgina 4

<ien, ya tienes descargada la versin de 9pac,e, ejecuta el "exe %ue te ,as descargado y vamos a seguir los pasos de la instalacin:

T-pica pantalla de bienvenida al 9sistente para la instalacin de 9pac,e 6"3"34, pulsamos -.e/t 0- para continuar la instalacin"

[Escribir texto]

Pgina 5

!o mismo de siempre, leemos la licencia de 9pac,e, y si estamos de acuerdo seleccionamos la opcin -I accept the terms in the license a#reement- (9cepto los t&rminos de la licencia) y se activar el botn -.e/t 0-, pulsamos sobre &l y continuamosN

Osta pantalla es in'ormacin sobre 9pac,e""" [Escribir texto] Pgina P

<ien, a%u- ya es lo importante de la instalacin" .et)or1 2omain : 62J"M"M"6 (1ombre o >P del 7rdenador) Server .ame : 62J"M"M"6 (1ombre o >P del 7rdenador) 'dministrator-s Email 'ddress : nuestro eBmail, aun%ue no es totalmente necesario" 3un )hen started manuall*4 onl* !or me " /eleccionamos esta opcin" !a >P 62J"M"M"6 es la direccin >P asociada a nuestra m%uina, es decir el ,ost local o vulgarmente conocido como 5ocalhost " *s importante decir %ue a la ,ora de probar tus scripts en modo local, da igual %ue pongas 62J"M"M"6 o local,ost" Hinalmente, recordar %ue el 9pac,e se instala por de'ecto en la carpeta: C+6'rchivos de pro#rama6'pache 7roup6'pache6" )ontinuamos con la instalacin ,asta llegar a la Altima ventana"

[Escribir texto]

Pgina J

9l pulsar sobre Install se terminar de instalar 9pac,e en tu ordenador, esto puede tardar algunos minutos" <ien, ahora vamos a instalar el PHP. 'se#8rate ahora de tener cerrado el 'pache"

Instalar PHP &


Hasta a,ora lo %ue ,emos ,ec,o es instalar 9pac,e 6"3"34 en nuestro ordenador, bien, a,ora la explicacin para instalar PHP 5" Procedemos a descargar el PHP para Findo0s" *l arc,ivo est locali+ado en la seccin Eo0nloads, apartado Findo0s <inaries, y es el Qip Pac?age (no el installer, aun%ue &ste ocupe menos luego no nos servir)" #na ve+ descargado todo el Q>P, nos creamos una carpeta en el sitio donde %ueramos instalar los arc,ivos del servidor (PHP, y/I!"""), por ejemplo nos creamos una carpeta en la ra-+ del disco duro y %ue %uede as-: C+69emporal6 copiamos el Q>P en esta carpeta y posteriormente creamos otra carpeta y la llamamos PHP C+6PHP, segAn la unidad en donde %uiera instalar el P,p" !uego extraemos los arc,ivos del Q>P dendro de esa carpeta PHP, tal %ue los contenidos del Q>P %uedarn dentro de la ruta C+6PHP6 @ a,ora ,ay %ue coger el todos los arc,ivos E!! locali+ados en la carpeta principal C+6PHP6 y copiarlos al directorio /ystem (en Findo0s Rx) o /ystem32 (1T,2MMM,DP,2MM3) de la carpeta del Findo0s (los arc,ivos E!! contenidos en la carpeta *DT no ,ace 'alta copiarlos)" Tan solo ,ace 'alta copiar los de la siguiente imagen rodeados con el rectngulo:

[Escribir texto]

Pgina K

#na ve+ copiados estos arc,ivos en la correspondiente carpeta de Findo0s toca con!i#urar el php.ini .

Con!i#uracin del archivo php.ini


*l siguiente paso es con'igurar el p,p"ini" )opiamos el arc,ivo C+6PHP6php.ini: recommended a la unidad C+6(indo)s o C+6(in.t segAn la versin de (indo)s ;ue estemos utili"ando y renombramos el arc,ivo por php.ini 9,ora lo editamos con el mismo bloc? de notas" *ditamos la l-nea register:globals S 7'' y la colocamos el valor: re#ister<#lo als = >n

Qu ha#o con re#ister<#lo als? >. u >???


9ctivar esta directiva nos permite asumir %ue las variables son globales y pueden llegar por cual%uier m&todo (P7/T, =*T, )77C>*, /*GL*G, etc)" 9s-, por ejemplo, si utili+amos una variable global de sesin o coo?ie se puede suplantar 'cilmente mediante una variable por url, con lo cual nuestro script no es seguro" #n buen programador de PHP tendr-a la directiva en 7HH y usar-a los arrays globales (THTTP:D:L9G/) o los superglobales T:P7/T, T:=*T, etc", %ue estn disponibles a partir de la versin 4"6"D de PHP" $@ por %u&( Pues por esos temas de seguridad en los script y por%ue debemos acostumbrarnos a no manejar variables globales ya %ue en un 'uturo el PHP tendr la opcin en 7HH por de'ecto y no podremos cambiarla" /in embargo, por temas de compatibilidad con script antiguos o %ue ,agan uso de variables globales, podr-a interesarnos activar esta caracter-stica, pero repito %ue lo deseable ser-a tenerla en 7HH y ,acer uso de los arrays globales o superglobales" 9 continuacin vamos a indicar a PHP dnde se guardan las extensiones" Eentro del p,p"ini buscamos e/tension<dir y le ponemos la carpeta %ue contiene los arc,ivos php<///.dll , %ue por de'ecto es la carpeta ext dentro de PHP" I@P>39'.9E+ durante toda la con'iguracin de directorios, debes utili+ar esta barra "U" y no esta "V", adems de ponerlo entre comillas" 7 sea, %ue debe %uedar as-: [Escribir texto] Pgina R

Eirectory

in

0,ic,

t,e

loadable

extensions

(modules)

reside"

e/tension<dir = AC+,PHP,e/t,A
9dems podemos activar las extensiones %ue %ueramos o necesitemos, para lo cual buscamos (indo)s E/tensions y para cargar las extensiones les %uitamos el N de delante" Por ejemplo, si %uisi&ramos cargar la extensin #d%.dll (para manejar las 'unciones PHP relativas a imgenes) deber-amos cambiar Be/tension=php<#d%.dll por e/tension=php<#d%.dll solo %uitamos el punto y coma"" )omo nota adicional, resaltar %ue ,ay algunas extensiones %ue re%uieren de librer-as extra %ue no vienen en el pa%uete completo de PHP, y para ,acerlas 'uncionar tendremos %ue buscar dic,as librer-as" 1o actives todas las librer-as a diestro y siniestro por%ue luego saldrn errores de %ue no se encuentra tal arc,ivoN antes de instalar una librer-a, comprueba %ue en la carpeta de PHP tienes los arc,ivos E!! correspondientes" I@P>39'.9E : la librer-a php<m*s;l.dll es la %ue permite manejar las 'unciones relacionadas con y/I!, y por de'ecto en PHP5 viene desactivada, por tanto vamos a activarla de la 'orma %ue indicamos antes: buscamos Be/tension=php<m*s;l.dll y le %uitamos el N de delante" 9,ora, si vamos a ,acer pruebas con upload de arc,ivos via HTTP, debemos indicar el directorio donde los arc,ivos se almacenarn temporalmente" Para ello buscamos upload<tmp<dir y le damos el valor de una carpeta %ue exista" Por ejemplo, en nuestro directorio ):V/ervidorVPHPV creamos una carpeta uploads, por lo %ue %uedar algo as-: N Temporary directory 'or HTTP uploaded 'iles (0ill use system de'ault i' not N speci'ied)"

upload<tmp<dir = AC+,PHP,uploads,A
/i %ueremos cambiar el tama8o mximo de los arc,ivo %ue pueden subirse via HTTP, buscamos upload<ma/<!ilesi"e y cambiamos el valor por de'ecto %ue trae, 2 (2 <), por el %ue %ueramos" 1o se recomienda poner un valor alto" N aximum allo0ed si+e 'or uploaded 'iles"

upload<ma/<!ilesi"e = %@
Para trabajar con sesiones, debemos especi'icar un directorio donde se guarden los arc,ivos temporales" 9l igual %ue 2 pasos antes, buscamos session.save<path y le damos el valor de un directorio %ue exista (o lo creamos):

session.save<path = AC+,PHP,sessions,A

Con!i#uracin del archivo httpd.con! de 'pache


!a 'orma de con'igurar el httpd.con! de 9pac,e 6"3"D para PHP 5, ,ay %ue editar el arc,ivo httpd.con! %ue encontramos en la carpeta Con! dentro del directorio del 9pac,e" 9brelo con el bloc de notas o con un editor de texto cual%uiera"

[Escribir texto]

Pgina 6M

<uscamos en el arc,ivo la cadena de texto 2*namic Shared > Cect D2S>E Support %ue es donde se cargan los mdulos" 9,- vamos a cargar el mdulo de PHP para 9pac,e, dando la direccin del arc,ivo p,p5apac,e"dll (PHP5) %ue lo contiene" *ncontramos ,asta un ejemplo: W *xample: W !oad odule 'oo:module modulesUmod:'oo"so W @ a,ora a8adimos justo debajo de esas lineas lo siguiente:

!oad odule p,p5:module ):UPHPUp,p5apac,e"dll Tiene %ue %uedar as-:

W *xample: W !oad odule 'oo:module modulesUmod:'oo"so W !oad odule p,p5:module ):UPHPUp,p5apac,e"dll 9,ora bajamos un poco por el ,ttpd"con' y llamamos al mdulo mod<php&.c4 debe %uedar as-:

)lear odule!ist 9dd odule mod:p,p5"c W9dd odule mod:v,ost:alias"c 9,ora buscamos en el ,ttpd"con' el modulo mod<dir.c y nos sale esto:

X>' odule mod:dir"cY Eirectory>ndex index",tml XU>' oduleY odi'icamos la l-nea central para %ue si entramos en un directorio tipo http+,,1%F.G.G.1,directorio, nos autoejecute el index predeterminado (si existe) y no nos salga un mensaje de error" Puedes usar ms nombres si lo pre'ieres" /e ejecutarn por orden: si no encuentra el primero, pasa al segundoN si no est el segundo, pasa al tercero, y as- sucesivamente ,asta %ue si no encuentra ninguno entonces da error" *n la siguiente

[Escribir texto]

Pgina 66

l-nea, si en nuestro directorio tenemos un index",tm y un index"p,p, por de'ecto se ejecutar el index",tm ya %ue est antes"

Eirectory>ndex index",tml index",tm index"p,p index"p,p3 index"p,p4 index"p,tml 9,ora le a8adimos debajo estas l-neas (en la primera de ellas, si estamos instalando PHP5 tambi&n podemos a8adir la extensin "p,p5 adems de las %ue aparecen):

9ddType applicationUxB,ttpdBp,p "p,p "p,p3 "p,p4 "p,tml 9ddType applicationUxB,ttpdBp,pBsource "p,ps !a primera indica las extensiones %ue sern interpretadas por el 9pac,e" Por ejemplo podemos a8adir la extensin ",tm o ",tml para %ue el 9pac,e ejecute el cdigo PHP contenido en esas pginas (es decir, el uso de cdigo PHP no est limitado exclusivamente a arc,ivos Z"PHP)" !a segunda sirve para %ue si entras en una pgina lo;uesea.phps entonces se muestra el cdigo PHP a color, muy Atil si %ueremos por ejemplo mostrar el cdigo 'uente a color en una pgina" Ee tal 'orma %ue al 'inal todo %ueda as-: X>' odule mod:dir"cY Eirectory>ndex index",tml index",tm index"p,p index"p,p3 index"p,p4 index"p,tml 9ddType applicationUxB,ttpdBp,p "p,p "p,p3 "p,p4 "p,tml 9ddType applicationUxB,ttpdBp,pBsource "p,ps XU>' oduleY *l directorio predeterminado para guardar nuestras pginas es el ,tdocs del 9pac,e: C+6'rchivos de pro#rama6'pache 7roup6'pache6htdocs6 Pero podemos cambiarlo 'cilmente" <uscamos 2ocument3oot y nos sale esto:

EocumentGoot "):U9rc,ivos de programaU9pac,e =roupU9pac,eU,tdocs" 1osotros sustituimos la carpeta ,tdocs del 9pac,e por la %ue %ueramos" Todos los arc,ivos %ue vayas a probar con el 9pac,e debern estar locali+ados en esta carpeta" Por ejemplo nos creamos una carpeta F*< dentro del directorio del servidor:

EocumentGoot "):U/ervidorU0ebU"

[Escribir texto]

Pgina 62

@ ya podemos guardar el arc,ivo ,ttpd"con' (%ue no se te olvide)" <ueno, ya tenemos todo" 9,ora tan slo %ueda comprobar %ue todo 'unciona correctamente"

Primera prue a de nuestro servidor 'pache


9,ora vamos a probar el 9pac,e y PHP, para lo cual deberemos arrancar el 9pac,e" /lo tenemos %ue arrancar el apache.e/e de la carpeta del 9pac,e para iniciar el servidor, con lo cual nos sale una ventanita de /BEos donde nos indicar %ue est activo (running) o no" <asta cerrar la ventanita de /BEos para desactivar el 9pac,e" )omo la siguiente imagen:

*n estos momentos nuestro 9pac,e est 'uncionando" 9,ora la prueba" )rear un arc,ivo p,p, a la %ue llamaremos test.php, en ella pon lo siguiente:

X(p,p phpin!oDEB (Y 9,ora en la barra de direccin: http+,,1%F.G.G.1,test.php o http+,,localhost,test.php (recuerda %ue 62J"M"M"6 S local,ost) con el 9pac,e activo deberemos visuali+ar una pgina de in'ormacin de PHP" /i no sale, algo ,a 'allado, revisa los pasos" !a pgina %ue deberiamos ver es como la siguiente imagen:

[Escribir texto]

Pgina 63

)omo ,as podido observar, para acceder a nuestro servidor local y as- poder probar nuestros script y las pginas de nuestra 0eb, siempre accederemos con la direccin 1%F.G.G.1 o localhost (sin FFF) en el navegador pues esta es la direccin del ,ost local de nuestro ordenador" *n general, para visuali+ar o acceder a cual%uier arc,ivo (PHP, HT !, TDT, Q>P, =>H, .P=, etc") %ue tengamos en nuestra carpeta de la 0eb, lo ,aremos de la siguiente 'orma: http+,,localhost,C'3PE9','3CHIH>.EI9 Eonde )9GP*T9 es la carpeta (o serie de carpetas) relativas a la rai+ en %ue se encuentra el 9G)H>L7"*DT Por tanto resaltar %ue no slo podemos ,acer llamadas a script PHP, sino tambi&n a pginas HT !, descarga de arc,ivos, imgenes, etc", tan solo poniendo la direccin correcta en el navegador" *s simplemente un servidor" Ee esta 'orma, podemos tener nuestra 0eb 'uncionando en nuestro propio ordenador para construirla desde cero o bien ,acer las pruebas %ue necesitemos sin tener %ue estar conectados a >nternet"

[Escribir texto]

Pgina 64

Instalacin de PHP& en (indo)s con Internet In!ormation Server DIISE


9ntes de comen+ar el proceso de instalacin, nos detendremos en >>/" /i se ,a instalado correctamente con los parmetros predeterminados, ya se encontrara en ejecucin" /eleccione: Inicio J Con!i#uracin J Panel de Control J Herramientas 'dministrativa J Servicios, y desplcese ,asta el servicio 'dministracin IIS %ue este ejecutndose, en caso %ue no este ejecutndose in-cielo" Para probar, si esta ejecutando correctamente el >>/, abra su navegador de >nternet y en el #G! tipee lo siguiente: http+,,localhost, vera algo similar a la siguiente pantalla"

/eguidamente, nos detendremos en el administrador de servicios de >nternet, una aplicacin de consola para administrar >>/ y ver como se ,a con'igurado" /eleccione: Inicio J Con!i#uracin J Panel de Control J Herramientas 'dministrativas J Servicios de Internet In!ormation Server, y se abre la pantalla siguiente"

[Escribir texto]

Pgina 65

/eguidamente se procede a >nstalar el PHP5, pero para ello debe de detener el servicio de >>/, y para ello nos ubicamos en Sitio (e Predeterminado y pulsamos clic derec,o sobre y nos muestra un menA contextual sobre el menA escogemos 2etener"

[Escribir texto]

Pgina 6P

#na ve+ %ue el servicio este detenido, se precede a instalar el PHP5 y con'igurar el arc,ivo PHP">1>, para ello siga los mismos pasos de instalacin y con'iguracin %ue ,icimos anteriormente"

Con!i#uracin del Internet In!ormation Server DIISE


9,ora vamos a proceder a con'igurar el >>/, para %ue recono+ca las paginas de P,p, para ello seleccione: Inicio J Con!i#uracin J Panel de Control J Herramientas 'dministrativa J Servicios de Internet In!ormation Server , seguidamente expanda /itios Feb Predeterminado y sobre pulsamos Clic 2erecho y escogemos Propiedades" /eguidamente nos muestra la siguiente ventana de propiedades:

[Escribir texto]

Pgina 6J

Eebe de reali+ar dos cambios muy importantes" Primero, tendr %ue registrar el 'iltro >/9P> PHP5, para instalar PHP con su propia /9P> en lugar de cmo binario )=>" Haga clic en la 'ic,a ?iltros IS'PI, pulse el oton '#re#ar y cree un nuevo 'iltro con el nombre PHP" !a carpeta de arc,ivo PHP descargada contiene php&isapi.dll, un 'iltro >/9P> PHP, en el directorio >sapi" >ndi%ue la ruta correcta a dic,o arc,ivo, la pantalla siguiente nos muestra esta con'iguracin"

[Escribir texto]

Pgina 6K

Tras ello, debe de indicar a >>/ a %ue arc,ivos tiene %ue aplicar el 'iltro PHP5" el objetivo es tratar como programas PHP a todos los arc,ivos con la extensin "p,p" *n la 'ic,a 2irectorio Particular, ,aga clic en el botn Con!i#uracin" Pulse el botn '#re#ar del siguiente cuadro de dialogo para abrir el cuadro de Eialogo '#re#ar o @odi!icar asi#nacin de e/tensin para aplicacin " )omo se muestra en la siguiente pantalla:

[Escribir texto]

Pgina 6R

/eguidamente sobre esa ventana, ,aga clic sobre el botn E/aminar y epeci'i%ue la ruta de php&isapi.dll" >ndi%ue a >>/ %ue lo apli%ue a los arc,ivos "p,p" Para ello debe de introducir .php en el cuadro de texto de E/tensin" Haga )lic dos veces en 'ceptar" )ierre el cuadro de propiedades e reinicie el >>/"

[Escribir texto]

Pgina 2M

)ree una carpeta en la carpeta 000root" 9signele el nombre %ue desee como ejemplo E* 7PHP y en ese directorio va a almacenar todos las paginas p,p %ue este creando y el acceso a los arc,ivos correspondientes mediante el #G! es http+,,localhost,demophp,pa#ina.php 9,ora para probar %ue este bien con'igurado el PHP5 con el >>/, cree el arc,ivo Test"p,p %ue anteriormente ,emos creado y lo almacena dentro del directorio %ue ,emos creado en el 000root"

Instalacin de PHP& con 'pache en 5inu/


Preinstalacin
Primero necesitamos saber %ue aplicaciones y librer-as re%ueridas as- como las %ue necesitamos en nuestros desarrollos con PHP5"

Instalacin 'pache en 5inu/

[Escribir texto]

Pgina 26

9pac,e es un so't0are de libre distribucin bajo licencia =P! de =1#, por su gran estabilidad, escalabilidad y robuste+ lo coloca como uno de los servidores 0eb mas popular de mundo" !o primero %ue debemos ,acer es revisar si tenemos instalado el servidor apac,e ya %ue en la mayor-a de las distribuciones de !inux viene como servidor Feb por de'ecto y es muy probable %ue lo tengan instalarlo as- %ue lo primero %ue ,ay %ue ,acer es desinstalarlo o decidir si %uieren conservarlo" )on el siguiente comando podremos saber si esta instalado: rpm B%a [ grep ,ttpd /e listan todos los pa%uetes %ue 'ueron instalados %ue contienen el nombre de ,ttpd" /i no arroja ninguna salida, entonces %uiere decir %ue no lo tenemos instalarlo de lo contrario podemos utili+ar el siguiente comando para desinstalarlo, esto solo aplica si 'ue instalado como un GP : rpm Bev ,ttpd *s muy posible %ue les diga %ue no se puede eliminar por %ue tiene dependientes, entonces puede eliminar los mdulos dependientes o simplemente eliminar sin importar los dependencias %ue tenga ,ttp: rpm \ev BBnodeps ,ttpd Eescargar los 'uentes de la siguiente direccin: ,ttp:UU'tp"0ayne"eduUapac,eU,ttpdU,ttpdB2"M"54"tar"g+ !o colocamos en una carpeta, en mi caso utili+o UusrUlocalUsrcU para las aplicaciones %ue voy a compilar e instalar" Eescomprimir: tar xv'+ ,ttpdB2"M"54"tar"g+ 9brimos la carpeta: cd ,ttpdB2"M"54 >niciamos la con'iguracin: "Ucon'igure BBpre'ixSUusrUlocalU,ttp BBenableBde'late BBenableBre0rite BBenableBso BBenableBin'o BBenableBmoduleSproxy BBenableBmoduleSperl BBenableBsuexec BBenableBmodsBs,aredSall

[Escribir texto]

Pgina 22

Puede %ue algunos de esto parmetros no se adapten a su servidor por las dependencias, entonces ,ay %ue valorar si vale la pena instalar las aplicaciones dependientes o simplemente %uitar algunos parmetros %ue no re%uiramos" Compilacin #na ve+ %ue todo salio bien en la con'iguracin ,ay %ue compilar la aplicacin con el siguiente comando: ma?e Instalacin /i todo marc,a bien entonces ,ay %ue ejecutar el siguiente comando para instalar la aplicacin %ue compilamos: ma?e install !isto a,ora ya tiene instalado 9pac,e en servidor !inux 9,ora ,ay %ue ,acer algunos preparativos: 9gregar variables de entorno al arrancar nuestro servidor, dentro del arc,ivo UetcUpro'ile: P9THSUusrUlocalU,ttpUbin:TP9TH export P9TH !isto ya podemos arrancar apac,e desde cual%uier parte obviamente despu&s de %ue iniciemos de nuevo la sesin o bien ,ay %ue lan+ar las variables" UetcUpro'ile Script de arran;ue Hay %ue crear un arc,ivo con editor vi o cual%uier otro editor %ue dese&: vi UetcUrc"dUinit"dUapac,e @ copiar el siguiente script: W]UbinUbas, W c,?con'ig: B 2K 32 W description: 9pac,e /ervidor 0eb" W processname: apac,e W con'ig: UusrUlocalU,ttpUcon'U,ttp"con' W pid'ile: pre'ixSUusrUlocalU,ttp " UetcUrc"dUinit"dU'unctions [Escribir texto] Pgina 23

i' ^ B' UetcUsyscon'igU,ttpd _N t,en " UetcUsyscon'igU,ttpd 'i >1>T!7=:9G=/SV"V" apac,ectlSTpre'ixUapac,ectl ,ttpdST`HTTPEBTpre'ixUbinU,ttpda progS,ttpd G*TL9!SM c,ec?63 () ` )71HH>!*STpre'ixUcon'U,ttpd"con' =71*SV"(/erverType[<ind9ddress[Port[9dd odule[)lear odule!ist[V" =71*SV"T`=71*a9gent!og[Ge'erer!og[Ge'erer>gnore[Hancy>ndexing[V" =71*SV"T`=71*a9ccess)on'ig[Gesource)on'ig)V" i' grep B*i% V"b^^:space:__Z(T=71*)V" T)71HH>!*N t,en ec,o 'ailure V"9pac,e 6"3 con'ig directives testV" ec,o exit 6 'i a start() ` ec,o Bn TV"/tarting Tprog: V" c,ec?63 [[ exit 6 daemon T,ttpd T7PT>71/ G*TL9!ST( ec,o ^ TG*TL9! S M _ cc touc, UvarUloc?UsubsysU,ttpd return TG*TL9! a stop() ` ec,o Bn TV"/topping Tprog: V" ?illproc T,ttpd G*TL9!ST( ec,o ^ TG*TL9! S M _ cc rm B' UvarUloc?UsubsysU,ttpd UvarUrunU,ttpd"pid a reload() ` ec,o Bn TV"Geloading Tprog: V" c,ec?63 [[ exit 6 ?illproc T,ttpd BH#P G*TL9!ST( ec,o a case V"T6V" in start) start NN stop) [Escribir texto] Pgina 24

stop NN status) status T,ttpd G*TL9!ST( NN restart) stop start NN condrestart) i' ^ B' UvarUrunU,ttpd"pid _ N t,en stop start 'i NN reload) reload NN grace'ul[,elp[con'igtest['ullstatus) Tapac,ectl Td G*TL9!ST( NN Z) ec,o TV"#sage: Tprog `start[stop[restart[condrestart[reload[status[ 'ullstatus[grace'ul[,elp[con'igtestaV" exit 6 esac exit TG*TL9! Posteriormente nos salimos del editor guardando el script y agregamos los permisos de ejecucin: c,mod J55 UetcUrc"dUinit"dUapac,e )reamos los enlaces 'uertes para los di'erentes niveles de ejecucin: cd UetcUrc"dUinit"d cc ln Bs' ""Uinit"dUapac,e ""UrcM"dUC2Kapac,e cc ln Bs' ""Uinit"dUapac,e ""Urc6"dUC2Kapac,e cc ln Bs' ""Uinit"dUapac,e ""Urc2"dUC2Kapac,e cc ln Bs' ""Uinit"dUapac,e ""Urc3"dU/32apac,e cc ln Bs' ""Uinit"dUapac,e ""Urc4"dU/32apac,e cc ln Bs' ""Uinit"dUapac,e ""Urc5"dU/32apac,e cc ln Bs' ""Uinit"dUapac,e ""UrcP"dUC2Kapac,e Probamos nuestro servidor con los siguientes comandos:

[Escribir texto]

Pgina 25

UsbinUservice apac,e start 9rrancar el servidor UsbinUservice apac,e stop Parrar el servidor UsbinUservice apac,e restart Geiniciar el servidor 7 tambi&n: UetcUrc"dUinit"dUapac,e start UetcUrc"dUinit"dUapac,e stop UetcUrc"dUinit"dUapac,e restart

Instalacin

Post#res;l

so re

5inu/

/i vamos a necesitar algunas bases de datos, por lo regular m*s;l ya viene instalado al igual %ue post#res;l pero en el caso de %ue no est&n ,ay %ue instalarla si es %ue vamos a desarrollar con estos servidores de bases de datos" *n el caso de tener instalada una versin anterior ,ay %ue desinstalarla o instalar la nueva en otro directorio" <uscar pa%uetes dependientes de postgres%l instalados con rpm" rpm B%a [ grep postgres%l 2esinstalar post#res;l rpm Bev BBnodeps postgres%lZ 2escar#arse el cdi#o !uente de la si#uiente direccin+ ,ttp:UU000"postgres%l"orgUdo0nloadU 2escomprimir tar xv'+ postgres%lBK"M"3"tar"g+ cd postgres%lBK"M"3 Con!i#uracin personali"ada *sta puede variar segAn nuestras necesidades, vamos a ver una de ellas: "Ucon'igure BBpre'ixSUusrUlocalUpgs%lU BBexecBpre'ixSUusrUlocalUpgs%lU BBenableBnls BB0it,B perl BB0it,Bpyt,on BB0it,Bpam BBenableBodbc BB0it,Bunixodbc BB0it,Bopenssl Compilar a?e Instalar [Escribir texto] Pgina 2P

ma?e install /i ocurre un error durante, la con'iguracin o compilacin entonces tenemos 2 casos %ue ,acer: 6" ma?e clean >nstalar las dependencias y repetir el proceso desde la con'iguracin" 2" ma?e clean )ambiar la con'iguracin %uitando el o los parmetros %ue nos causa el con'licto y ejecutar esta nueva con'iguracin siguiendo con el proceso" Creacin de la cuenta de usuario post#res adduser postgres \d UdataUpgs%l su \ postgres m?dir data UusrUlocalUpgs%lUbinUinitdb BE UdataUpgs%lUdata UusrUlocalUpgs%lUbinUpostmaster BE UdataUpgs%lUdata Ylog'ile 2Yc6 c '#re#uemos estas varia les de entorno al 'inal del arc,ivo : UetcUpro'ile !E:!><G9G@:P9THSUusrUlocalUpgs%lUlib export !E:!><G9G@:P9TH P9THSUusrUlocalUpgs%lUbin:TP9TH export P9TH 91P9THSUusrUlocalUpgs%lUman:T 91P9TH export 91P9TH Escri ir el script de arran;ue cat Y UetcUrc"dUinit"dUpostgres%l XX "*7H" W] UbinUs, W c,?con'ig: B 2P 34 W description: /ervidor de base de datos version K W processname: posgres%l W con'ig: UdataUpgs%lUdataUpostgres%l"con' W pid'ile:UvarUrunUpostmaster"pid P=L*G/>71SK"M >1>TESUetcUrc"dUinit"d " T>1>TEU'unctions T@P*/*TSetypeset B'[grep "declare"e " UetcUsyscon'igUnet0or? 19 *Sebasename TMe P=P7GTS5432 [Escribir texto] Pgina 2J

export P=E9T9SUdataUpgs%lUdata i' ^ B' TP=E9T9UP=:L*G/>71 _ cc ^ Bd TP=E9T9UbaseUtemplate6 _ t,en ec,o "#sing oldBstyle directory structure" else export P=E9T9SUdataUpgs%lUdata 'i pre'ixSUusrUlocalUpgs%l ^ B' UetcUsyscon'igUpgs%lUT`19 *a _ cc " UetcUsyscon'igUpgs%lUT`19 *a export P=E9T9 export P=P7GT export P=7PT/ ^ "T`1*TF7GC>1=a" S "no" _ cc exit M ^ B' Tpre'ixUbinUpostmaster _ [[ exit M start()` P/I!:/T9GTST"/tarting T`19 *a service: " i' ^ B' TP=E9T9UP=:L*G/>71 _ cc ^ Bd TP=E9T9Ubase _ t,en i' ^ ecat TP=E9T9UP=:L*G/>71e ]S TP=L*G/>71_ t,en /@/E7)E>GS"(@our /ystems documentation directory)" i' ^ Bd Tpre'ixUdocUpostgres%lBTP=L*G/>71 _ t,en /@/E7)E>GSTpre'ixUdoc 'i i' ^ Bd Tprexi'Us,areUdocUpostgres%lBTP=L*G/>71 _ t,en /@/E7)E>GSTpre'ixUs,areUdoc 'i i' ^ Bd Tpre'ixUdocUpac?agesUpostgres%lBTP=L*G/>71 _ t,en /@/E7)E>GSTpre'ixUdocUpac?ages 'i i' ^ Bd Tpre'ixUs,areUdocUpac?agesUpostgres%lBTP=L*G/>71 _ t,en /@/E7)E>GSTpre'ixUs,areUdocUpac?ages 'i ec,o ec,o T"9n old version o' t,e database 'ormat 0as 'ound"VVVVn@ou need to upgrade t,e data 'ormat be'ore using Postgre/I!"VVVVn/ee T/@/E7)E>GUpostgres%lB TP=L*G/>71UG*9E *"rpmBdist 'or more in'ormation"" exit 6 'i else ec,o Bn T">nitiali+ing database: " i' ^ ] Bd TP=E9T9 _ t,en [Escribir texto] Pgina 2K

m?dir Bp TP=E9T9 c,o0n postgres"postgres TP=E9T9 c,mod goBr0x TP=E9T9 'i ^ B' UetcUsyscon'igUi6Kn _ cc cp UetcUsyscon'igUi6Kn TP=E9T9U""Uinitdb"i6Kn ^ ] B' UetcUsyscon'igUi6Kn _ cc ec,o "!91=Sen:#/" Y TP=E9T9U""Uinitdb"i6Kn ec,o "export !91= !):9!! !):)T@P* !):)7!!9T* !):1# *G>) !):)T@P* !):T> *" YY TP=E9T9U""Uinitdb"i6Kn su Bl postgres Bs UbinUs, Bc "Tpre'ixUbinUinitdb BBpgdataSTP=E9T9 Y UdevUnull 2Yc6" X UdevUnull ^ B' TP=E9T9UP=:L*G/>71 _ cc ec,o:success ^ ] B' TP=E9T9UP=:L*G/>71 _ cc ec,o:'ailure ec,o 'i pidSepido' Bs Tpre'ixUbinUpostmastere i' ^ Tpid _ cc Tpre'ixUbinUpg:ctl status BE TP=E9T9 Y UdevUnull 2Yc6 t,en ec,o T"Postmaster already running"" else rm B' UtmpU"s"P=/I!"T`P=P7GTa Y UdevUnull ec,o Bn "TP/I!:/T9GT" su Bl postgres Bs UbinUs, Bc "Tpre'ixUbinUpostmaster BE TP=E9T9 Ylog'ile 2Yc6 c" sleep 6 pidSepido' Bs Tpre'ixUbinUpostmastere i' ^ Tpid _ t,en success "TP/I!:/T9GT" touc, UvarUloc?UsubsysUT`19 *a ec,o Tpid Y UvarUrunUpostmaster"T`P=P7GTa"pid ec,o else 'ailure "TP/I!:/T9GT" ec,o 'i 'i a stop()` ec,o Bn T"/topping T`19 *a service: " su Bl postgres Bs UbinUs, Bc "Tpre'ixUbinUpg:ctl stop BE TP=E9T9 Bs Bm 'ast" Y UdevUnull 2Yc6 retST( i' ^ Tret Be% M _ t,en ec,o:success else ec,o:'ailure 'i [Escribir texto] Pgina 2R

ec,o rm B' UvarUrunUpostmaster"T`P=P7GTa"pid rm B' UvarUloc?UsubsysUT`19 *a a restart()` stop start a condrestart()` ^ Be UvarUloc?UsubsysUT`19 *a _ cc restart a reload()` su Bl postgres Bs UbinUs, Bc "Tpre'ixUbinUpg:ctl reload BE TP=E9T9 Bs" Y UdevUnull 2Yc6 a W /ee ,o0 0e 0ere called" case "T6" in start) start NN stop) stop NN status) status postmaster NN restart) restart NN condrestart) condrestart NN reload['orceBreload) reload NN Z) ec,o T"#sage: TM `start[stop[status[restart[condrestart[reload['orceBreloada" exit 6 esac exit M *7H c,mod J55 UetcUrc"dUinit"dUpostgres%l

[Escribir texto]

Pgina 3M

Kltimos enlaces !uertes cd UetcUrc"dUinit"d cc ln Bs' ""Uinit"dUpostgres%l ""UrcM"dUC2Ppostgres%l cc ln Bs' ""Uinit"dUpostgres%l ""Urc6"dUC2Ppostgres%l cc ln Bs' ""Uinit"dUpostgres%l ""Urc2"dUC2Ppostgres%l cc ln Bs' ""Uinit"dUpostgres%l ""Urc3"dU/34postgres%l cc ln Bs' ""Uinit"dUpostgres%l ""Urc4"dU/34postgres%l cc ln Bs' ""Uinit"dUpostgres%l ""Urc5"dU/34postgres%l cc ln Bs' ""Uinit"dUpostgres%l ""UrcP"dUC2Ppostgres%l *a lo puedes arrancar4 parar4 o reiniciar UetcUrc"dUinit"dUpostgres%l start UetcUrc"dUinit"dUpostgres%l stop UetcUrc"dUinit"dUpostgres%l restart o tambien: UsbinUservice postgres%l start UsbinUservice postgres%l stop UsbinUservice postgres%l restart Hay %ue ,acer algunas modi'icaciones a la con'iguracin de postgres%l para %ue pueda escuc,ar la red, por as- como esta solo escuc,a nada ms peticiones locales flocal,ostg post#res;l.con! Eentro de postgres%l"con' %ue esta UdataUpgs%lUdadaU %ue 'ue la ruta donde decidimos instalar la base de datos: listen:addresses S h6R2"6PK"6R"4Ph pass0ord:encryption S trae en esta misma ruta ,abilitamos los permisos de rangos o %ue ipis %ue se van conectar remotamente p#<h a.con! local all all pass0ord ,ost all all 62J"M"M"6 255"255"255"255 pass0ord ,ost all all 6R2"6PK"6R"5M 255"255"255"255 pass0ord Todav-a no ,ay %ue reiniciar el servidor postgres%l para %ue levante esta nueva con'iguracin si no asta %ue demos de lata todos los usuarios de base d datos con sus contrase8a correspondientes"

[Escribir texto]

Pgina 36

Instalacin de PHP&
Eescargar los 'uentes del sitio de p,p en la seccin de descargas ,ttp:UU000"p,p"netUdo0nloads"p,p la versin ms actual y estable de PHP5" p,pB5"M"5 tar"g+ )opiamos dentro del rea de 'uentes locales, en la carpeta ,usr,local,src 2escomprimimos+ tar xv'+ p,pB5"M"5"tar"g+ Con!i#uracin de PHP& /olo ,ay %ue con'igurar de acuerdo a las librer-as %ue tenemos as- como las nuevas %ue instalamos: "Ucon'igure BBbuildSi3KPBred,atBlinux BB,ostSi3KPBred,atBlinux BBtargetSi3KPBred,atB linuxBgnu BBprogramBpre'ixS BBpre'ixSUusrUlocalUp,p5 BBcac,eB'ileS""Ucon'ig"cac,e BB0it,Bcon'igB'ileBpat,SUusrUlocalUp,p5Uetc BB0it,Bcon'igB'ileBscanB dirSUusrUlocalUp,p5UetcUp,p"d BBenableB'orceBcgiBredirect BBdisableBdebug BBenableBpic BBdisableBrpat, BBenableBinlineBoptimi+ation BB0it,Bb+2 BB0it,Bdb4SUusr BB0it,B curlSUusrUlocal BB0it,BexecBdirSUusrUbin BB0it,B'reetypeBdirSUusrUlocal BB0it,BpngB dirSUusrUlocal BB0it,BgdSUusrUlocal BBenableBgdBnativeBtt' BB0it,outBgdbm BB0it,Bgettext BB0it,BncursesSUusr BB0it,Bgmp BB0it,Biconv BB0it,BjpegBdirSUusrUlocal BB0it,Bopenssl BB0it,Bpng BB0it,BpspellSUusrUlocal BB0it,Bxml BB0it,BexpatBdirSUusr BB0it,B domSUusrUlocal BB0it,BdomBxsltSUusrUlocal BB0it,BdomBexsltSUusrUlocal BB0it,BpcreB regexSUusrUlocal BB0it,B+lib BB0it,BlayoutS=1# BBenableBbcmat, BBenableBexi' BBenableB 'tp BBenableBmagicB%uotes BBenableBsa'eBmode BBenableBsoc?ets BBenableBsysvsem BBenableBsysvs,m BBenableBtrac?Bvars BBenableBtransBsid BBenableByp BBenableB0ddx BB0it,BpearSUusrUs,areUpear BB0it,BimapSUusr BB0it,BimapBssl BB0it,B?erberos BB0it,B ldapSUusr BB0it,Bmys%lSUusr BB0it,Bpgs%lSUusrUlocalUpgs%lU BB0it,BsnmpSUusrUlocal BBenableBucdBsnmpB,ac? BB0it,Bunix7E<)SUusr BBenableBmemoryBlimit BBenableBs,mop BBenableBcalendar BBenableBdbx BBenableBdio BBenableBmbstringSUusr BBenableBmbstrBencB trans BBenableBmbregex BB0it,BmimeBmagicSUusrUs,areU'ileUmagic"mime BB0it,B apxs2SUusrUlocalU,ttpUbinUapxs BB0it,Bmygnet Compilamos ma?e Instalamos ma?e install !a instalacin agrega una linea dentro del httpd.con! en la seccion de modulos del apac,e %ue es la siguiente: !oad odule p,p5:module modulesUlibp,p5"so /olo resta por agregar los tipos de arc,ivos: [Escribir texto] Pgina 32

9ddType applicationUxB,ttpdBp,p "p,p 9ddType applicationUxB,ttpdBp,p "p,p3 9ddType applicationUxB,ttpdBp,p "p,p4 9ddType applicationUxB,ttpdBp,p "p,p5 9ddType applicationUxB,ttpdBp,pBsource "p,ps )erramos el ,ttpd"con' y reiniciamos el servidor 9pac,e; @ reali+amos la prueba: vi in'o"p,p y escribimos: X( P,pin'o()N (Y

[Escribir texto]

Pgina 33

Captulo L. 7eneralidades PHP&


7eneralidades
!a caracter-stica ms importante de PHP es %ue permite combinar cdigo html y cdigo php en una misma pgina (de extensin p,p), por ejemplo:
<html> <head> <title>Ejemplo PHP Pagina1</title> </head> <body> Hola estamos en el Curso de PHP.. <br /> <?php print!"Hola soy el Pro#esor $uri Pan%o&' <(r ) *+; ? </body> </html>

*ste ejemplo al guardarse en un arc,ivo de extensin .php es automticamente anali+ado por el interprete de p,p cuando el bro0ser env-a un pedido" *l ciclo es el siguiente: *l bro0ser env-a un pedido de un arc,ivo con extensin php" *l server anali+a %ue la extensin del re%uest es " php, obtiene el arc,ivo y lo env-a al interprete php" *l interprete p,p del 0ebBserver parsea el arc,ivo en busca de ta#s M? ?0 y procesa todo lo %ue se encuentre entre dic,os tags (puede ,aber varias apariciones de los tags en un mismo arc,ivo), todo a%uello %ue esta 'uera de los tags se env-a al bro0ser sin interpretar" *l resultado combinado de a%uello %ue no debe interpretarse y el resultado del cdigo interpretado se env-a al bro0ser" *n nuestro ejemplo el bro0ser recibir-a:
<html> <head> <title> Ejemplo PHP Pagina1</title> </head> <body> Hola estamos en el Curso de PHP.. <br /> Hola soy el Pro esor !uri Pando <br /> </body> </html>

)omo podemos ver, es muy sencillo combinar cdigo html y php" Para generar ,tml desde p,p tenemos algunas de las siguientes opciones: #sar la 'uncin fprint de phpg [Escribir texto] Pgina 34

#sar la 'uncin fecho de phpg )errar el tag ?0 escribir el cdigo ,tml deseado y volver a abrir el tag M? !a tercera opcin es la ms e'iciente en velocidad cuando el cdigo ,tml %ue debemos generar es 'ijo, cuando el cdigo ,tml es dinmico podemos usar una me+cla de print y tags %ue abren y cierran %ue suele ser lo mas e'iciente, por ejemplo: X'orm nameSgM ? printDNOnom re<!ormPE?0g Y etc;

Conceptos $sicos en la #eneracin de sites din$micos con PHP.


#na caracter-stica interesante de php es %ue permite reali+ar fincludesg dentro de un script php, de esta 'orma se puede modula ri+ar una pgina o el layout de una pgina en varios mdulos p,p %ue se desarrollan en 'orma independiente, adems pueden desarrollarse en p,p componentes reusables %ue luego se utili+an en otras pginas o incluso en otros sites" #na 'orma comAn de trabajo usando p,p para generar sitios dinmicos es de'inir ftemplatesg o fla*outsg en los cuales se divide la pgina en f "onasg o fmdulosg %ue sern desarrollados en p,p, el layout de la pgina con la 'orma y tama8o de cada +ona se puede de'inir sin problemas usando por ejemplo tablas de ,tml"

?uncionalidad de PHP
Hunciones de calendario y manipulacin de calendarios usando )9! Programacin orientada a objetos Hunciones para creacin de arc,ivos PEH Hunciones de manejo de cajeros cybercas, 9nali+ador de documentos D ! FEED Hunciones de compresin de datos anejo de arc,ivos E< Hunciones para manipulacin de 'ec,as Hunciones para manejo de directorios Hunciones de encripcin de datos Hunciones de acceso al 'ilesystem Hunciones para manejo de HTP Hunciones de ,as,ing =eneracin dinmica de imgenes anejo de cuentas de mail > 9P y P7P3 Hunciones para envi de mail Hunciones de net0or?ing usando soc?ets Hunciones matemticas /eriali+acin de estructuras de datos 9cceso a bases de datos ( ys%l, 7racle, Postgress, /ybase, etc) anejo de expresiones regulares" Pgina 35

[Escribir texto]

anejo de sesiones"

Captulo Q. Introduccin al 5en#uaCe


Conociendo el 5en#uaCe
PHP es un lenguaje no posicional, por lo %ue no importa la columna en la cual se comience a escribir el cdigo" Tampoco in'luye sobre el cdigo la cantidad de saltos de l-nea (enter) %ue se colo%uen, ni la cantidad de espacios" !a 'orma en la %ue se separan las distintas sentencias es mediante la utili+acin de fBg" *n PHP cada sentencia debe 'inali+ar con fBg" /e puede escribir ms de una sentencia en la misma l-nea siempre y cuando las mismas se encuentren separadas con fBg"

Comentarios
*n PHP ,ay 3 'ormas distintas de incluir comentarios: UZ 9l estilo de ) en donde el comentario empie+a y termina delimitado por barra asterisco y asterisco barra ZU 7 bien usando UU )omentario 7 por Altimo W )omentario *n las dos Altimas variantes el comentario empie+a en donde se encuentra el fUUg o el fWg y termina cuando termina la l-nea"

9ipos de 2atos
PHP admite muc,os tipos de datos estructurados y sencillos" !os tipos de datos sencillos son los %ue contienen un rango de valores %ue se pueden ordenar en una dimension (cadenas, numeros, valores booleanos, etc), mientras %ue los tipos de datos estructurados incluyen matrices y objetos" PHP cuenta con oc,o tipos simples %ue describimos en las siguientes tablas: 9ipo de 2atos <ooleano *ntero Hlotante [Escribir texto] 2escripcin *scalarN puede ser True o Halso *scalarN un numero entero *scalarN un numero %ue puede tener un decimal" Pgina 3P

)adena atri+ 7bjeto Gecurso 1#!!

*scalarN una serie de caracteres )ompuestoN una asignacin ordenada ( contiene nombres asignados a valores )" )ompuestoN un tipo puede contener propiedades y m&todos" *specialN contiene una re'erencia a un recurso externo, como por ejemplo un controlador de un arc,ivo abierto" *specialN puede contener Anicamente 1#!! como valor, lo %ue signi'ica %ue expl-citamente la variable no contiene ningAn valor"

*n general el tipo de dato de una variable no es decidido por el programador sino %ue lo decide el lenguaje en tiempo de ejecucin, la instruccin settype puede usarse para 'or+ar el tipo de dato de una variable en los raros casos en %ue esto sea necesario" Todas las variables en p,p se denotan utili+ando el signo jTi precediendo al nombre de la variable"

Enteros
Ta S 6234N Ta S B623N Ta S M623N Ta S Mx62N UU nAmero enterol UU nAmero negativo UU nAmero octal (K3 en decimal) UU nAmero en ,exadecimal (6K decimal)

?lotantes
!os nAmeros de punto 'lotante pueden notarse de la siguiente manera: Ta S 6"234N Ta S 6"2e3N

Cadena
*n PHP las cadenas tienen un manejo similar al utili+ado en f)g o f)kkg, estn prede'inidos los siguientes caracteres especiales: Vn Vr Vt VV VT Vg 1ueva l-nea /alto de carro (carring return) Tabulacin <arra invertida /igno dolar )omillas doble

#na cadena puede iniciali+arse usando comillas dobles o comillas simples" )uando se utili+an comillas dobles el interprete de p,p anali+a previamente la cadena, es decir %ue reempla+a los nombres de variables %ue encuentra en la cadena por el contenido de la variable" )uando se usan comillas simples la cadena se imprime tal y como 'igura sin ser anali+ada" *jemplo: [Escribir texto] Pgina 3J

TxSg.uangN TsSgHola TxgN TtSiHola Txi Ts vale fHola .uang y Tt vale fHola Txg" /e pueden concatenar cadenas usando el operador f"g de la siguiente manera: TxSgHolagN TySg/istemas#nigN TsSTx"TyN UU Ts es igual a fHola/istemas#nig" TsSTx"g f"TyN UU 9%u- Ts vale fHola /istemas#nig

Hectores
!os vectores en p,p actAan tanto como vectores tradicionales (indexados por nAmero) as- tambi&n como vectores asociativos (indexados por clave)" !os vectores pueden crearse usando las instrucciones flistg o farrayg o bien iniciali+ando en 'orma expl-cita cada elemento del vector" Ta^M_Sg,olag Ta^6_Sg/istemas#nigN Ta^fclaveg_SgunigN #tili+ando la notacin especial Tv^_N se pueden agregar elementos a un vector" Ta^M_SgunigN Ta^6_Sg/istemas#nigN Ta^_SgsistemasgN W9signa a Ta^2_ el valor fsistemasg" *xisten 'unciones especiales para ordenar vectores, contar la cantidad de elementos de los mismos, recorrerlos, etc"

@atrices
!a de'inicin, iniciali+acin y uso de matrices en PHP es sencilla" /e puede pensar una matri+ en PHP como un vector de vectores, por lo %ue se puede utili+ar la misma lgica %ue en los primeros" Ta^M_^6_Sg#nigN Ta^M_^fclaveg_Sg/istemasgN Ta^fclave6g_^fclave2g_^M_^6_Sg/istemas#nigN etc; Para incluir el valor de un elemento de un vector en una cadena se deben usar llaves para indicar el alcance del nombre de la variable a reempla+ar: ec,o f*sta es una prueba `Ta^M_^6_agN #na 'orma Atil de iniciali+ar un vector asociativo es usando la siguiente notacin: [Escribir texto] Pgina 3K

Ta S array ( fcolorg SY frojog, fedadg SY 23, fnombreg SY fjuang )N Para crear una matri+ se pueden anidar las declaraciones de tipo array" Ta S array( "apple" SY array( "color" SY "red", "taste" SY "s0eet", "s,ape" SY "round" ), "orange" SY array( "color" SY "orange", "taste" SY "tart", "s,ape" SY "round" ), "banana" SY array( "color" SY "yello0", "taste" SY "pasteBy", "s,ape" SY "bananaBs,aped" ) )N

Constantes 2e!inidas
*n PHP tambien podemos de'inir contenedores de valores denominados constantes" !as constantes, como su nombre implica, solo se pueden de'inir una ve+ en un programa PHP, por medio de la 'uncin de!ineD E4 y su valor nunca cambia" /e di'erencian de las variables en %ue los nombres no empie+an por el signo dlar" !as constantes solo pueden contener valores escalares como booleanos, enteros, 'lotante y cadena, no pueden contener valores como matrices y objetos" /e pueden utili+ar en cual%uier parte de un programa PHP independientemente del ambito de las variables y distingue entre mayusculas y minusculas" Para de'inir una constante debe utili+ar la 'uncion de!ineD E e incluir entre los par&ntesis el nombre %ue ,aya seleccionado para las constantes, seguido por el valor de la misma, como se muestra a continuacin: de'ine(fP>g,3"64656PR2)N UU P> siempre tiene el valor 3"64656PR2 ec,o P>N UU muestra al usuario el valor de P> %ue es 3"64656PR2 !uego las constantes pueden usarse como variables tradicionales (TP>) con la salvedad de %ue no se les puede asignar un valor"

>peradores

[Escribir texto]

Pgina 3R

!os operadores aritm&ticos en PHP tambi&n se asemejan al ), en las cuales podemos traajar con los siguientes tipos : 9ipo 9ritm&tico 9signacin )omparacin )ontrol de *rrores >ncrementoUEecremento !gico )adena 2escripcin Geali+a operaciones aritm&ticas comunes, como suma, resta, multiplicacin, divisin, resto aritm&tico" 9signa valores a las variables" )ompara valores de 'orma booleana" Eevuelve True o Halse 9'ecta la resolucin de errores" >ncrementa o reduce una variable 7peradores booleanos como 91E, 7G y 17T %ue se pueden utili+ar para incluir o excluir" )oncatena cadenas

>peradores 'ritmticos
Ta k TbN UUsuma Ta B TbN UUresta TakkN UUposBincremento, esta sentencia devuelve el valor de Ta y lo incrementa en 6" kkTaN UUpreBincremento, incrementa en 6 el valor de Ta y devuelve el valor incrementado TaBBN UUposBdecremento BBTaN UUpreBdecremento Ta Z TbN UUmultiplicacin Ta U TbN UUdivisin Ta l TbN UUresto aritmetico

'si#nacin
!a asignacin se resuelve con el signo igual (fSg)" TaS5N TaSTbN TbS(TcSP)N UU9signa 5 a Ta UU9signa el valor de Tb a Ta UU9signa P a Tc y a Tb

@ pueden combinarse asignacin y operadores de la 'orma: TakS5N Tx"Sg,olagN UU/uma y asigna 5 a Ta UU)oncatena Tx con f,olag

Comparaciones
Ta S S TbN Ta S S S TbN Ta YS TbN Ta XS TbN Ta ]S TbN UUtrue si Ta igual a Tb UUtrue si Ta igual a Tb y adems son del mismo tipo UUmayor o igual UUmenor o igual UUtrue si a y b son distintos

[Escribir texto]

Pgina 4M

Control de Errores
)uando se antepone R a una expresin se suprimen los errores %ue la expresin pudiera generar" *jemplo: d(TcSTaUTb)N

>peradores l#icos
Ta cc TbN Ta [[ TbN Ta xor TbN ]TaN UUTrue si Ta es true y Tb es true UUTrue si Ta es true o Tb es true UU7r exclusivo UUTrue si Ta es 'also (17T)

>perador * ?unciones Cadena


/olo existe un operador de cadena: el punto ( " ), pero PHP cuenta con numerosas 'unciones de cadena %ue le permiten manipular cadenas en 'orma e'ica+" >perador de Concatenacin *l operador de concatenacin ( " ) se puede utili+ar entre valores de cadena para combinarlos" Leamos como se utili+a en un programa PHP"
<"php #nombre $ %!uri%& #apellido $ %Pando%& #ambos'datos $ #nombre . % % . #apellido& e(ho %)ombres y *pellidos $ <b>#ambos'datos</b>%& ">

?uncion StrlenD E !a 'uncion /trlen( ) busca la longitud de una cadena" )uenta todos los caracteres de la cadena y devuelve el total" *n el siguiente ejemplo muestra la longitud de la cadena y lo muestra en pantalla"
<"php #nombre $ %!uri%& #apellido $ %Pando%& #ambos'datos $ #nombre . % % . #apellido& #longitud $ strlen+#ambos'datos,& e(ho %)ombres y *pellidos $ <b>#ambos'datos</b><br>%& e(ho %-ongitud de la Cadena <b>#longitud</b>%& ">

?uncin StrstrD E !a 'uncion /trstr( ) obtiene cual%uier parte de una cadena %ue se encuentra tras la primera instancia de un determinado carcter o cadena dentro de una cadena" *n el siguiente ejemplo, el valor de la variable Tambos:datos (@uri Pando) se busca ,asta la primera instancia del espacio, y tras ellos la 'uncion strstr( ) devuelve todo lo %ue se encuentre despu&s del espacio"

[Escribir texto]

Pgina 46

<"php #nombre $ %!uri%& #apellido $ %Pando%& #ambos'datos $ #nombre . % % . #apellido& #longitud $ strlen+#ambos'datos,& # un(ion'strstr $ strstr+#ambos'datos. % %,& e(ho %)ombres y *pellidos $ <b>#ambos'datos</b><br>%& e(ho %-ongitud de la Cadena <b>#longitud</b><br>%& e(ho %-a Parte despues del espa(io es <b>% . # un(ion'strstr . %</b>%& ">

?uncion StrposD E !a 'uncion /trpos( ), se utili+a para determinar si una cadena de bus%ueda existe dentro de una cadena buscada y devuelve un valor numerico %ue indica el punto en el %ue se inicia la cadena de bus%ueda" *n el siguiente ejemplo vamos a buscar dentro de la variable Tambos:datos el carcter n"
<"php #nombre $ %!uri%& #apellido $ %Pando%& #ambos'datos $ #nombre . % % . #apellido& #longitud $ strlen+#ambos'datos,& # un(ion'strstr $ strstr+#ambos'datos. % %,& #posi(ion $ strpos+#ambos'datos. %n%,& e(ho %)ombres y *pellidos $ <b>#ambos'datos</b><br>%& e(ho %-ongitud de la Cadena <b>#longitud</b><br>%& e(ho %-a Parte despues del espa(io es <b>% . # un(ion'strstr . %</b><br>%& e(ho %-a posi(ion del (ara(ter /0uot&n/0uot& es <b> % . #posi(ion . %</b>%& ">

ECercicio *l siguiente ejemplo vamos a crear una pagina PHP en la cual vamos a trabajar con las 'unciones de cadena %ue anteriormente ,emos estado estudiando esta pagina se va a llamar 9ra aCando<con<cadenas.php"
<html> <head> <title>1rabajando (on Cadena en PHP2</title> </head> <body bg(olor$%3444444%> <h1>1rabajando (on Cadena en PHP2</h1> <table 5idth$%1667% border$%1%> <tr> <td 5idth$%897%> < ont a(e$%*rial. Hel:eti(a. sans;seri % si<e$%;1%> =sando Con(atena(ion ; El . operador </ ont></td> <td 5idth$%217%> < ont a(e$%*rial. Hel:eti(a. sans;seri % si<e$%;1%> <?php ,no-(re . "$uri"; ,apelli%o . "Pan%o"; ,a-(os/%atos . ,no-(re ' " " ' ,apelli%o; echo "No-(res y Apelli%os . <( ,a-(os/%atos<)( "; ?

[Escribir texto]

Pgina 42

</ ont></td> </tr> <tr> <td 5idth$%897%> < ont a(e$%*rial. Hel:eti(a. sans;seri % si<e$%;1%> >us(ando -ongitud de Cadena ; =sando <b>strlen+,</b> </ ont> </td> <td 5idth$%217%> < ont a(e$%*rial. Hel:eti(a. sans;seri % si<e$%;1%> <?php ,lon0itu% . strlen!,a-(os/%atos+; echo "1a 1on0itu% es <( " ' ,lon0itu% ' "<)( "; ? </ ont> </td> </tr> <tr> <td 5idth$%897%> < ont a(e$%*rial. Hel:eti(a. sans;seri % si<e$%;1%> ?ostrando parte de una (adena usando <b> strstr+, </b> </ ont> </td> <td 5idth$%217%> < ont a(e$%*rial. Hel:eti(a. sans;seri % si<e$%;1%> <?php ,#uncion/strstr . strstr!,a-(os/%atos, " "+; echo "1a parte %e la ca%ena %espues %el espacio es <( " ' ,#uncion/strstr ' "<)( "; ? </ ont> </td> </tr> <tr> <td 5idth$%897%> < ont a(e$%*rial. Hel:eti(a. sans;seri % si<e$%;1%> =bi(ando posi(ion de una (adena ; usando <b>strpos+, </b> </ ont> </td> <td 5idth$%217%> < ont a(e$%*rial. Hel:eti(a. sans;seri % si<e$%;1%> <?php ,letra . strpos!,a-(os/%atos, "n"+; echo "1a posicion %e la letra 23uot;n23uot; es <( " ' ,letra ' "<)( "; ? </ ont> </td> </tr> </table> </body> </html>

[Escribir texto]

Pgina 43

Vous aimerez peut-être aussi