<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHPBSD.net &#187; pear</title>
	<atom:link href="http://www.phpbsd.net/tag/pear/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phpbsd.net</link>
	<description>Blogueando sobre PHP, BSD, SEO, AJAX, Seguridad, Rendimiento... y mucho más</description>
	<lastBuildDate>Thu, 07 Oct 2010 11:57:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nuevos estándares para las PEAR2</title>
		<link>http://www.phpbsd.net/2007/07/12/nuevos-estandares-para-las-pear2/</link>
		<comments>http://www.phpbsd.net/2007/07/12/nuevos-estandares-para-las-pear2/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 22:04:48 +0000</pubDate>
		<dc:creator>Oriol</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[estándares]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[pear2]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://www.phpbsd.net/2007/07/12/nuevos-estandares-para-las-pear2/</guid>
		<description><![CDATA[Hace un par de días anunciaron en el blog de las PEAR la disponibilidad de un nuevo estándar donde se describen los cambios necesarios en las reglas de las PEAR para hacer frente, entre otros requisitos, al nuevo instalador Pyrus y a la nueva característica unzip-and-go de las PEAR2. Desde el post se llama a [...]


Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/06/05/nuevo-blog-para-las-nuevas-pear/' rel='bookmark' title='Permanent Link: Nuevo blog para las &#8220;nuevas&#8221; PEAR'>Nuevo blog para las &#8220;nuevas&#8221; PEAR</a></li><li><a href='http://www.phpbsd.net/2007/05/16/cache-de-paginas-estaticas-para-php/' rel='bookmark' title='Permanent Link: Cache de páginas estáticas para PHP'>Cache de páginas estáticas para PHP</a></li><li><a href='http://www.phpbsd.net/2008/01/18/phpbarcelonaorg-el-nuevo-portal-para-el-grupo-php/' rel='bookmark' title='Permanent Link: PHPBarcelona.org, el nuevo portal para el Grupo PHP'>PHPBarcelona.org, el nuevo portal para el Grupo PHP</a></li></ul>]]></description>
			<content:encoded><![CDATA[<p>Hace un par de días anunciaron en el <a href="http://www.phpbsd.net/2007/06/05/nuevo-blog-para-las-nuevas-pear/" title="Nuevo blog para las &#8220;nuevas&#8221; PEAR en PHPBSD.net">blog de las PEAR</a> la disponibilidad de un <a target="_blank" href="http://wiki.pear.php.net/index.php/PEAR2_Standards" title="PEAR2 Standards - PEAR Wiki">nuevo estándar</a> donde se describen los cambios necesarios en las reglas de las PEAR para hacer frente, entre otros requisitos, al nuevo instalador <strong>Pyrus</strong> y a la nueva característica <em>unzip-and-go</em> de las <strong>PEAR2</strong>. Desde el post se llama a la participación en la página de discusión de la wiki.</p>
<p>Se tratan temas como la estructura de directorios, nombres de archivos y clases, dependencias entre clases, como trabajar con el repositorio, etc.</p>
<p>En la misma wiki puedes ver una <a target="_blank" href="http://wiki.pear.php.net/index.php/Pear2_require" title="Pear2 require - PEAR Wiki">lista completa de los problemas</a> q este nuevo estándar quiere solventar. Es realmente interesante la nueva característica <em>unzip-and-go</em> de las <strong>PEAR2</strong>, permite a quien quiera usar sólo una o dos clases PEAR se las pueda descargar y utilizar directamente sin necesidad de <a href="http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/" title="Instalar clases PEAR en un hosting compartido en PHPBSD.net">usar el instalador</a>.</p>
<p>Vía <a target="_blank" href="http://blog.pear.php.net/2007/07/08/pear2-standards-we-would-like-to-know-what-you-think/" title="PEAR Blog  &raquo; Blog Archive   &raquo; PEAR2 standards, we would like to know what you think">PEAR Blog</a></p>


<p>Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/06/05/nuevo-blog-para-las-nuevas-pear/' rel='bookmark' title='Permanent Link: Nuevo blog para las &#8220;nuevas&#8221; PEAR'>Nuevo blog para las &#8220;nuevas&#8221; PEAR</a></li><li><a href='http://www.phpbsd.net/2007/05/16/cache-de-paginas-estaticas-para-php/' rel='bookmark' title='Permanent Link: Cache de páginas estáticas para PHP'>Cache de páginas estáticas para PHP</a></li><li><a href='http://www.phpbsd.net/2008/01/18/phpbarcelonaorg-el-nuevo-portal-para-el-grupo-php/' rel='bookmark' title='Permanent Link: PHPBarcelona.org, el nuevo portal para el Grupo PHP'>PHPBarcelona.org, el nuevo portal para el Grupo PHP</a></li></ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpbsd.net/2007/07/12/nuevos-estandares-para-las-pear2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jugando con del.icio.us desde PHP</title>
		<link>http://www.phpbsd.net/2007/06/18/jugando-con-delicious-desde-php/</link>
		<comments>http://www.phpbsd.net/2007/06/18/jugando-con-delicious-desde-php/#comments</comments>
		<pubDate>Mon, 18 Jun 2007 03:15:18 +0000</pubDate>
		<dc:creator>Oriol</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[delicious-api]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[servicios-web]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.phpbsd.net/2007/06/18/jugando-con-delicious-desde-php/</guid>
		<description><![CDATA[Del.icio.us, el archiconocido servicio de gestión de marcadores sociales, ofrece una API para poder desarrollar aplicaciones que utilicen sus servicios. Hace tiempo que vi aparecer la clase Services_Delicious en el repositorio de las PEAR pero hasta ahora no le había podido pegar un ojo, es una clase que implementa un cliente para los servicios web [...]


Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/02/09/leyendo-xml-desde-php-con-simplexml/' rel='bookmark' title='Permanent Link: Leyendo XML desde PHP con SimpleXML'>Leyendo XML desde PHP con SimpleXML</a></li><li><a href='http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/' rel='bookmark' title='Permanent Link: Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)'>Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)</a></li><li><a href='http://www.phpbsd.net/2007/12/12/como-interactuar-con-google-desde-php-usando-zend-framework/' rel='bookmark' title='Permanent Link: Como interactuar con Google desde PHP usando Zend Framework'>Como interactuar con Google desde PHP usando Zend Framework</a></li></ul>]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://del.icio.us/" title="del.icio.us">Del.icio.us</a>, el archiconocido servicio de gestión de marcadores sociales, ofrece una <a target="_blank" href="http://del.icio.us/help/api/" title="del.icio.us/help/api">API</a> para poder desarrollar aplicaciones que utilicen sus servicios. Hace tiempo que vi aparecer la clase <a target="_blank" href="http://pear.php.net/package/Services_Delicious" title="PEAR :: Package :: Services_Delicious">Services_Delicious</a> en el repositorio de las PEAR pero hasta ahora no le había podido pegar un ojo, es una clase que implementa un cliente para los <strong>servicios web basados en REST</strong> de del.icio.us.</p>
<p>La <a target="_blank" href="http://es.wikipedia.org/wiki/Representational_State_Transfer" title="Representational State Transfer - Wikipedia, la enciclopedia libre">Transferencia de Estado Representacional</a> (Representational State Transfer) o <strong>REST</strong> describe una interfaz web simple utilizando peticiones HTTP y datos XML pero <strong>sin capas adicionales como SOAP</strong>, frecuentemente usadas en los servicios web. Precisamente el otro día estuve charlando con mi colega <a target="_blank" href="http://www.harecoded.com/" title="Harecoded">Manuel Aguilar</a> acerca de las ventajas de usar servicios REST en muchos escenarios frente a los clásicos servicios web basados en SOAP o basados en protocolos propios, tema que se trato en la pasada <a target="_blank" href="http://phpconference.com/" title="International PHP Conference">PHP Conference 2007 spring edition</a> celebrada en Stuttgart a la que <a target="_blank" href="http://www.harecoded.com/2007/06/04/obsolescencia/" title="Harecoded  &raquo; Blog Archive   &raquo; De conferencias con una Psion 5mx">Manuel asistió</a>.</p>
<p>Sin ánimo de entrar en más detalles de lo que es REST (puedes consultar la definición de la wikipedia que enlazo, está muy bien) vamos a ver como <strong>trabajar con del.icio.us desde PHP usando la clase Services_Delicious</strong>.</p>
<p>Services_Delicious es una clase todavía en fase beta que no implementa todo lo que nos ofrece el servicio web de del.icio.us, pero que ya permite hacer todas las operaciones básicas cómodamente, como guardar y borrar enlaces, listar los tags, cambiarles el nombre, etc. Son poco más de 400 lineas bastante bien escritas, aunque en PHP4, donde se utiliza <a target="_blank" href="http://pear.php.net/package/HTTP_Request" title="PEAR :: Package :: HTTP_Request">HTTP_Request</a> para realizar las peticiones HTTP y <a target="_blank" href="http://pear.php.net/package/XML_Serializer" title="PEAR :: Package :: XML_Serializer">XML_serializer</a> para trabajar con los datos XML.</p>
<p>A continuación describo como hacer una nube de tags de una cuenta determinada de del.icio.us y como guardar un nuevo enlace. Esto son sólo dos ejemplos de utilización de algunas de las funciones que nos proporciona Services_Delicious, puedes ver todas las funciones disponibles en el siguiente listado:</p>
<ol>
<li>getTags()</li>
<li>renameTag($old, $new)</li>
<li>getDates()</li>
<li>getPosts($tags, $date)</li>
<li>getRecentPosts($tags, $max)</li>
<li>getAllPosts()</li>
<li>addPost($url, $description, $extended, $tags, $date, $shared)</li>
<li>deletePost($url)</li>
</ol>
<h4>Instalación de Services_Delicious</h4>
<p>Asumiendo que tenemos las <a href="http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/" title="Instalar clases PEAR en un hosting compartido en PHPBSD.net">PEAR disponibles</a> lo primero que hemos de hacer es instalar la clase en cuestión:</p>
<p><code>$ pear install --onlyreqdeps Services_Delicious-beta</code></p>
<p>Si estamos trabajando con la versión estable de las PEAR, lo más habitual, será necesario añadir "-beta" al nombre del paquete o cambiar la variable de configuración <em>preferred_state</em>. La instalación con el frontend web de las PEAR es igualmente sencilla, lo único a tener en cuenta es que necesita el paquete XML_Serializer que no se instalará automáticamente si tenemos <em>preferred_state=stable</em> ya que también se encuentra en fase beta.</p>
<h4>Guardando un enlace en del.icio.us</h4>
<p>El código necesario para guardar un enlace es el siguiente:</p>
<div class="syntax_hilite">
<div id="php-3">
<div class="php"><span style="color:#616100;">require_once</span> <span style="color:#FF0000;">'Services/Delicious.php'</span>;<br />
<span style="color:#0000FF;">$username</span> = <span style="color:#FF0000;">'usuario'</span>;<br />
<span style="color:#0000FF;">$password</span> = <span style="color:#FF0000;">'contraseña'</span>;<br />
<span style="color:#0000FF;">$dlc</span> = <span style="color:#000000; font-weight:bold;">new</span> Services_Delicious<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$username</span>, <span style="color:#0000FF;">$password</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$enlace</span> = <span style="color:#FF0000;">'http://www.phpbsd.net/'</span>;<br />
<span style="color:#0000FF;">$titulo</span> = <span style="color:#FF0000;">'PHPBSD.net'</span>;<br />
<span style="color:#0000FF;">$desc</span> = <span style="color:#FF0000;">'Blog de programación PHP'</span>;<br />
<span style="color:#0000FF;">$tags</span> = <span style="color:#FF0000;">'php, programación, webdev'</span>;<br />
<span style="color:#0000FF;">$result</span> = <span style="color:#0000FF;">$dlc</span>-&gt;<span style="color:#006600;">addPost</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$enlace</span>, <span style="color:#0000FF;">$titulo</span>, <span style="color:#0000FF;">$desc</span>, <span style="color:#0000FF;">$tags</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>PEAR::<span style="color:#006600;">isError</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$result</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; <a href="http://www.php.net/die"><span style="color:#000066;">die</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$result</span>-&gt;<span style="color:#006600;">getMessage</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#616100;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#FF0000;">'OK'</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</div>
</div>
<p></p>
<p>Con los nombres de las variables se entiende perfectamente como funciona el tema.</p>
<h4>Generando una nube de tags</h4>
<p>A continuación una utilización un poco más divertida, generar una nube con todas las etiquetas de una cuenta determinada:</p>
<div class="syntax_hilite">
<div id="php-4">
<div class="php"><span style="color:#0000FF;">$tags</span> = <span style="color:#0000FF;">$dlc</span>-&gt;<span style="color:#006600;">getTags</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#616100;">foreach</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$tags</span> <span style="color:#616100;">as</span> <span style="color:#0000FF;">$key</span> =&gt; <span style="color:#0000FF;">$value</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#FF0000;">'&lt;a href=&quot;http://del.icio.us/'</span>.<span style="color:#0000FF;">$username</span>.<span style="color:#FF0000;">'/'</span>.<span style="color:#0000FF;">$key</span>.<span style="color:#FF0000;">'&quot; title=&quot;'</span>.<span style="color:#0000FF;">$key</span>.<span style="color:#FF0000;">' ('</span>.<span style="color:#0000FF;">$value</span>.<span style="color:#FF0000;">')&quot; style=&quot;font-size:'</span>.<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC66CC;">70</span>+<span style="color:#CC66CC;">14</span>*<span style="color:#0000FF;">$value</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#FF0000;">'%&quot;&gt;'</span>.<span style="color:#0000FF;">$key</span>.<span style="color:#FF0000;">'&lt;/a&gt; '</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</div>
</div>
<p></p>
<p>Lo anterior sólo es un ejemplo rápido, dependiendo de la cantidad de etiquetas y enlaces se debería hacer algo más con el <em>font-size</em>. Puedes ver funcionando el anterior código sobre mi cuenta en del.icio.us en este <a href="http://www.phpbsd.net/scripts/ejemplo-de-nube-de-tags.php" title="PHPBSD.net &raquo; scripts &raquo; Ejemplo de nube de tags">ejemplo de nube de tags</a>.</p>
<p>Con Services_Delicious se ha de tener en cuenta que aunque podemos enviar datos con la clásica codificación iso-8859-1 <strong>las respuestas vienen en UTF-8</strong>, hemos de trabajar con UTF-8 o usar las funciones <em>utf8_encode()</em> y <em>utf8_decode()</em> según convenga, otra opción es modificar Services_Delicious y cambiar la forma de trabajar con XML_Serializer.</p>
<h4>Aplicaciones</h4>
<p>Aunque la API es muy sencilla nos permite añadir tags a prácticamente cualquier tipo de aplicación PHP, por ejemplo con el anterior código fácilmente nos curramos un pluguin para <strong>WordPress</strong> que cada vez que colgamos un post lo guarde en del.icio.us, que permita generar una nube de tags, etc. (si es que todavía no existe). Otro ejemplo es con una aplicación de comercio electrónico con stock online como un <strong>supermercado</strong> o una <strong>web de viajes</strong>, podemos hacer un script que recorra la BD de turno guardando todos los productos en del.icio.us y permitiendo trabajar con tags, que los usuarios puedan actualizarlos, generar nubes con ellos, etc.</p>
<p>Si a pesar de disponer de tu aplicación PHP en tus servidores o en tu servicio de hosting te gusta sacarte el trabajo de encima con servicios como FeedBurner para los RSS, Flickr para las imágenes, YouTube para los Vídeos... <strong>¿porque no usar del.icio.us para tus tags?</strong></p>
<p>Trabajar con del.icio.us para los tags de tu web tiene la ventaja de que del.icio.us en si es un <strong>buen sistema de promoción</strong>, mucha gente anda suscrita a RSS de determinados tags, se busca bastante directamente en del.icio.us, etc., y también tiene su <strong>efecto en SEO</strong>, cada nuevo tag representa un backlink hacia nosotros desde la página de dicho tag. El inconveniente de trabajar con un tercero está claro, que el usuario se pierda por del.icio.us y no vuelva a nuestra tienda o a nuestro blog, aunque siempre podemos usar del.icio.us y no enlazarlos.</p>
<p>A parte de añadir la dimensión de "tag" a nuestra aplicación otro ejemplo de uso de la API de del.icio.us es acceder a <strong>nuestros bookmarks</strong> de una forma totalmente personalizada y poder mostrarlos como queramos. Un ejemplo de esto es lo que hace <a target="_blank" href="http://www.pauiglesias.com/" title="Blog de Pau Iglesias">Pau Iglesias</a> en la <a target="_blank" href="http://www.pauiglesias.com/links/" title="Enlaces en el Blog de Pau Iglesias">sección de enlaces</a> de su blog, aunque usando <a target="_blank" href="http://www.pauiglesias.com/delicious-php-api/" title="del.icio.us PHP API en el Blog de Pau Iglesias">otra clase para acceder a la API de del.icio.us</a> que también está muy bien, de hecho es un proyecto más maduro que Services_Delicious.</p>
<p>Esta otra clase es una modificación del mismo Pau Iglesias de la <a target="_blank" href="http://dietrich.ganx4.com/delicious/" title="Dietrich Ayala | del.icio.us PHP API">clase original</a> de <strong>Dietrich Ayala</strong>, autor de las conocidas <a target="_blank" href="http://sourceforge.net/projects/nusoap/" title="SourceForge.net: NuSOAP - SOAP Toolkit for PHP">NuSOAP</a>. En comparación Services_Delicious me gusta más porque básicamente me gusta trabajar con PEAR y usa XML_Serializer/HTTP_Request que, a parte de que ya me las conozco, hacen que el código sea muy limpio y fácilmente adaptable a tus necesidades, pero si no te gustan las PEAR el proyecto <strong>del.icio.us PHP API de Pau Iglesias</strong> se merece una ojeada, proporciona más o menos las mismas funcionalidades que Services_Delicious pero con el añadido de un interesante sistema de cache.</p>


<p>Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/02/09/leyendo-xml-desde-php-con-simplexml/' rel='bookmark' title='Permanent Link: Leyendo XML desde PHP con SimpleXML'>Leyendo XML desde PHP con SimpleXML</a></li><li><a href='http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/' rel='bookmark' title='Permanent Link: Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)'>Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)</a></li><li><a href='http://www.phpbsd.net/2007/12/12/como-interactuar-con-google-desde-php-usando-zend-framework/' rel='bookmark' title='Permanent Link: Como interactuar con Google desde PHP usando Zend Framework'>Como interactuar con Google desde PHP usando Zend Framework</a></li></ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpbsd.net/2007/06/18/jugando-con-delicious-desde-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar clases PEAR en un hosting compartido</title>
		<link>http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/</link>
		<comments>http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 02:21:34 +0000</pubDate>
		<dc:creator>Oriol</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/</guid>
		<description><![CDATA[En muchas ocasiones disponemos de un servicio de hosting compartido que no tiene las PEAR instaladas, o que ofrece una instalación mínima que no incluye las clases que necesitamos. A continuación describo como realizar una instalación local de las PEAR en un servidor compartido usando la linea de comandos o un navegador web. A parte [...]


Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/06/05/nuevo-blog-para-las-nuevas-pear/' rel='bookmark' title='Permanent Link: Nuevo blog para las &#8220;nuevas&#8221; PEAR'>Nuevo blog para las &#8220;nuevas&#8221; PEAR</a></li><li><a href='http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/' rel='bookmark' title='Permanent Link: Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier'>Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier</a></li><li><a href='http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/' rel='bookmark' title='Permanent Link: Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)'>Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)</a></li></ul>]]></description>
			<content:encoded><![CDATA[<p>En muchas ocasiones disponemos de un servicio de hosting compartido que no tiene las <a target="_blank" href="http://pear.php.net/" title="PEAR :: The PHP Extension and Application Repository">PEAR</a> instaladas, o que ofrece una instalación mínima que no incluye las clases que necesitamos. A continuación describo como realizar una <strong>instalación local de las PEAR en un servidor compartido</strong> usando la linea de comandos o un navegador web. A parte de instalaciones en servicios de hosting estos procedimientos resultan muy útiles en otras ocasiones, por ejemplo si queremos probar nuevas clases o distintas versiones de clases sin necesidad de instalarlas en el sistema.</p>
<h4>Instalación por consola</h4>
<p>Si disponemos de acceso SSH, Telnet, o directo a la consola del servidor este es el procedimiento a seguir.</p>
<p><strong>[1]</strong> Iniciamos la sesión de usuario.</p>
<p><strong>[2]</strong> Creamos una configuración por defecto para las PEAR:</p>
<p><code>$ pear config-create $HOME .pearrc</code></p>
<p><strong>[3]</strong> Creamos un directorio temporal en nuestra cuenta para evitarnos problemas de permisos en el directorio "/tmp" del sistema:</p>
<p><code>$ mkdir $HOME/tmp</code></p>
<p><strong>[4]</strong> Cambiamos las variables necesarias para que trabajen con nuestro directorio temporal:</p>
<p><code>$ pear config-set download_dir $HOME/tmp/download<br />
$ pear config-set temp_dir $HOME/tmp</code></p>
<p><strong>[5]</strong> Verificamos la correcta configuración:</p>
<p><code>$ pear config-show</code></p>
<p><strong>[6]</strong> Instalamos el sistema base:</p>
<p><code>$ pear install -o PEAR</code></p>
<p><strong>[7]</strong> Instalamos las clases PEAR que necesitemos:</p>
<p><code>$ pear install &lt;clase&gt;</code></p>
<p>o si queremos instalar alguna versión beta:</p>
<p><code>$ pear install &lt;clase&gt;-beta</code></p>
<h4>Instalación vía web</h4>
<p>Si sólo disponemos de acceso por FTP o Web (como yo con <a title="HOSTGATOR WEB HOSTING - cPanel, Reseller, and Dedicated Website Hosting" target="_blank" href="http://secure.hostgator.com/cgi-bin/affiliates/clickthru.cgi?id=ojimenez">HostGator</a>) o si no queremos trabajar con comandos estos son los pasos necesarios para realizar una instalación vía web.</p>
<p><strong>[1]</strong> Vamos a <a target="_blank" href="http://go-pear.org/" title="go-pear.org">http://go-pear.org/</a> y guardamos el script PHP que aparece como <em>go-pear.php</em>.</p>
<p><strong>[2]</strong> Creamos un directorio en nuestro servidor, por ejemplo "pear", y copiamos <em>go-pear.php</em> dentro.</p>
<p><strong>[3]</strong> Abrimos con un navegador la URL correspondiente, por ejemplo:<br />
<em>http://ejemplo.com/pear/go-pear.php</em></p>
<p><strong>[4]</strong> Seguimos los pasos que nos aparecen por pantalla, las opciones por defecto son válidas en la mayoría de ocasiones.</p>
<p><strong>[5]</strong> Posteriormente podremos gestionar las clases PEAR instaladas abriendo:<br />
<em>http://ejemplo.com/pear/</em><br />
Allí nos encontraremos el <strong>Web-based PEAR Frontend</strong> que nos permitirá instalar, desinstalar y actualizar clases, buscar nuevas clases, cambiar la configuración, etc.</p>
<p><strong>[6]</strong> Es importante proteger el directorio de las PEAR para que no sea accesible al público. Al estar dentro del <em>DocumentRoot</em> del servidor Apache cualquiera podrá acceder a la configuración de nuestras PEAR a no ser que protejamos el directorio con <a target="_blank" href="http://httpd.apache.org/docs/2.0/howto/auth.html" title="Autentificación, Autorización y Control de Acceso - Servidor HTTP Apache">usuario+contraseña y/o filtrando por IP</a>.</p>
<p>Snapshot del frontend web de las PEAR:</p>
<p><img src="http://www.phpbsd.net/wp-content/images/snapshot_pear.png" alt="PEAR Frontend snapshot" /></p>
<h4>Configuraciones finales</h4>
<p>Una vez completado con éxito cualquiera de los dos procedimientos anteriores sólo nos faltará añadir el directorio que contiene las clases PEAR, en el ejemplo "pear/PEAR", al <a target="_blank" href="http://es2.php.net/manual/es/ini.core.php#ini.include-path" title="PHP: Descripción de las directivas de núcleo en php.ini - Manual">include_path</a> del PHP para que funciones como <em>include()</em> y <em>require()</em> puedan encontrar las nuevas clases:</p>
<div class="syntax_hilite">
<div id="php-6">
<div class="php"><a href="http://www.php.net/set_include_path"><span style="color:#000066;">set_include_path</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/get_include_path"><span style="color:#000066;">get_include_path</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.PATH_SEPARATOR.<span style="color:#FF0000;">'/home/usuario/pear/PEAR'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p>Se ha de cambiar "/home/usuario" por la ruta física a tu home de usuario. En el último paso del proceso de instalación vía web se muestra la ruta física a las clases, si has realizado una instalación por consola teclea <em>pwd</em> en tu home y añade "pear/PEAR".</p>


<p>Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/06/05/nuevo-blog-para-las-nuevas-pear/' rel='bookmark' title='Permanent Link: Nuevo blog para las &#8220;nuevas&#8221; PEAR'>Nuevo blog para las &#8220;nuevas&#8221; PEAR</a></li><li><a href='http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/' rel='bookmark' title='Permanent Link: Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier'>Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier</a></li><li><a href='http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/' rel='bookmark' title='Permanent Link: Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)'>Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)</a></li></ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Nuevo blog para las &#8220;nuevas&#8221; PEAR</title>
		<link>http://www.phpbsd.net/2007/06/05/nuevo-blog-para-las-nuevas-pear/</link>
		<comments>http://www.phpbsd.net/2007/06/05/nuevo-blog-para-las-nuevas-pear/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 21:19:23 +0000</pubDate>
		<dc:creator>Oriol</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://www.phpbsd.net/2007/06/05/nuevo-blog-para-las-nuevas-pear/</guid>
		<description><![CDATA[Después de los últimos cambios en la gestión del proyecto ya se empiezan a ver algunas novedades, el nuevo presidente de las PEAR presenta el blog oficial del proyecto con el objetivo de difundir noticias relacionadas y para recibir feedback de la comunidad.
La nueva constitución aprobada recientemente que ha tenido como consecuencia la elección democrática [...]


Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/07/12/nuevos-estandares-para-las-pear2/' rel='bookmark' title='Permanent Link: Nuevos estándares para las PEAR2'>Nuevos estándares para las PEAR2</a></li><li><a href='http://www.phpbsd.net/2007/01/28/usando-mod_rewrite-y-feedburner-para-las-feeds-de-un-blog-con-wordpress/' rel='bookmark' title='Permanent Link: Usando mod_rewrite y FeedBurner para las feeds de un blog con WordPress'>Usando mod_rewrite y FeedBurner para las feeds de un blog con WordPress</a></li><li><a href='http://www.phpbsd.net/2008/01/18/phpbarcelonaorg-el-nuevo-portal-para-el-grupo-php/' rel='bookmark' title='Permanent Link: PHPBarcelona.org, el nuevo portal para el Grupo PHP'>PHPBarcelona.org, el nuevo portal para el Grupo PHP</a></li></ul>]]></description>
			<content:encoded><![CDATA[<p>Después de los últimos cambios en la gestión del proyecto ya se empiezan a ver algunas novedades, el <a target="_blank" href="http://pear.php.net/news/newpresident-2007.php" title="PEAR :: PEAR elects its first president">nuevo presidente</a> de las PEAR presenta el <a target="_blank" href="http://blog.pear.php.net/" title="PEAR Blog">blog oficial del proyecto</a> con el objetivo de difundir noticias relacionadas y para recibir feedback de la comunidad.</p>
<p>La <a target="_blank" href="http://pear.php.net/manual/en/constitution.php" title="PEAR :: Manual :: Constitution">nueva constitución</a> aprobada recientemente que ha tenido como consecuencia la elección democrática de un <a target="_blank" href="http://pear.php.net/news/newgroup-2007.php" title="PEAR :: First democratically elected PEAR Group">nuevo PEAR Group</a> junto con el nacimiento de este blog son una buena limpieza de cara para el proyecto PEAR.</p>
<p>De momento lo más interesante del blog es el último post donde se anuncia el nuevo instalador Pyrus, todavía en fase pre-devel, para las nuevas clases PHP5+.</p>
<p>Vía <a target="_blank" href="http://blog.joshuaeichorn.com/archives/2007/06/03/pear-has-a-blog/" title="Joshua Eichorn's Blog &raquo; Blog Archive   &raquo; PEAR has a blog">Joshua Eichorn's Blog</a></p>


<p>Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/07/12/nuevos-estandares-para-las-pear2/' rel='bookmark' title='Permanent Link: Nuevos estándares para las PEAR2'>Nuevos estándares para las PEAR2</a></li><li><a href='http://www.phpbsd.net/2007/01/28/usando-mod_rewrite-y-feedburner-para-las-feeds-de-un-blog-con-wordpress/' rel='bookmark' title='Permanent Link: Usando mod_rewrite y FeedBurner para las feeds de un blog con WordPress'>Usando mod_rewrite y FeedBurner para las feeds de un blog con WordPress</a></li><li><a href='http://www.phpbsd.net/2008/01/18/phpbarcelonaorg-el-nuevo-portal-para-el-grupo-php/' rel='bookmark' title='Permanent Link: PHPBarcelona.org, el nuevo portal para el Grupo PHP'>PHPBarcelona.org, el nuevo portal para el Grupo PHP</a></li></ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpbsd.net/2007/06/05/nuevo-blog-para-las-nuevas-pear/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier</title>
		<link>http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/</link>
		<comments>http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/#comments</comments>
		<pubDate>Tue, 06 Feb 2007 01:53:40 +0000</pubDate>
		<dc:creator>Oriol</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/</guid>
		<description><![CDATA[Si estamos metidos en la "divertida" tarea de programar intérpretes de protocolos XML nos puede ayudar un poco el paquete XML_Beautifier de las PEAR. Se trata de un embellecedor de código que se encarga de limpiar y dejar leíbles los datos XML.
Normalmente en las transacciones XML los datos se transfieren sin saltos de linea, ni [...]


Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/02/09/leyendo-xml-desde-php-con-simplexml/' rel='bookmark' title='Permanent Link: Leyendo XML desde PHP con SimpleXML'>Leyendo XML desde PHP con SimpleXML</a></li><li><a href='http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/' rel='bookmark' title='Permanent Link: Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)'>Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)</a></li><li><a href='http://www.phpbsd.net/2007/01/31/transfiriendo-datos-con-la-libreria-curl-en-php/' rel='bookmark' title='Permanent Link: Transfiriendo datos con la librería cURL en PHP'>Transfiriendo datos con la librería cURL en PHP</a></li></ul>]]></description>
			<content:encoded><![CDATA[<p>Si estamos metidos en la "divertida" tarea de programar intérpretes de protocolos XML nos puede ayudar un poco el paquete <a target="_blank" href="http://pear.php.net/package/XML_Beautifier" title="PEAR :: Package :: XML_Beautifier">XML_Beautifier</a> de las PEAR. Se trata de un embellecedor de código que se encarga de limpiar y dejar leíbles los datos XML.</p>
<p>Normalmente en las transacciones XML los datos se transfieren sin saltos de linea, ni espacios extra, etc. Esto, dependiendo de la complejidad del XML, hace casi imposible la lectura por un humano. La clase XML_Beautifier nos ayudará a separar en distintas líneas, tabular correctamente el código entendiendo los tags, simplificar los comentarios, cambiar mayúsculas por minúsculas, reemplazar caracteres por su entidad HTML, etc. Si no quieres estar copiando constantemente los XML en un navegador para poder leer algo te puede ayudar bastante.</p>
<p>Su uso es el siguiente:</p>
<div class="syntax_hilite">
<div id="php-9">
<div class="php"><span style="color:#616100;">require_once</span> <span style="color:#FF0000;">'XML/Beautifier.php'</span>;<br />
<span style="color:#0000FF;">$fmt</span> = <span style="color:#000000; font-weight:bold;">new</span> XML_Beautifier<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$resultado</span> = <span style="color:#0000FF;">$fmt</span>-&gt;<span style="color:#006600;">formatString</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$archivo</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>PEAR::<span style="color:#006600;">isError</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$resultado</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$resultado</span>-&gt;<span style="color:#006600;">getMessage</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p>En <em>$archivo</em> tenemos el contenido del archivo XML, por ejemplo la <a href="http://www.phpbsd.net/2007/01/31/transfiriendo-datos-con-la-libreria-curl-en-php/" title="Transfiriendo datos con la librería cURL en PHP en PHPBSD.net">respuesta de una petición cURL</a>, y en <em>$resultado</em> obtendremos el XML formateado. También disponemos de la alternativa a <em>formatString()</em> q es:</p>
<div class="syntax_hilite">
<div id="php-10">
<div class="php"><span style="color:#0000FF;">$resultado</span> = <span style="color:#0000FF;">$fmt</span>-&gt;<span style="color:#006600;">formatFile</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'original.xml'</span>, <span style="color:#FF0000;">'formateado.xml'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p>Con esto se trabaja sobre archivos en disco y no variables. Dispone de distintas <a target="_blank" href="http://pear.php.net/manual/en/package.xml.xml-beautifier.options.php" title="PEAR :: Manual :: Options">opciones de configuración</a> q nos permitirán fijar el número de espacios de los tabs y demás.</p>
<p>Una advertencia acerca de esta clase... Consume bastante memoria y tiempo para realizar la transformación. Es por esto que si estás soportando muchas transacciones XML es aconsejable sólo usar XML_Beatufier en el momento de leer los XML y no siempre.</p>
<p>Ah! por cierto, de momento está sin maintainer, ten controlado donde la usas pq quizás has de dejar de hacerlo... aunque funciona perfectamente.</p>


<p>Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/02/09/leyendo-xml-desde-php-con-simplexml/' rel='bookmark' title='Permanent Link: Leyendo XML desde PHP con SimpleXML'>Leyendo XML desde PHP con SimpleXML</a></li><li><a href='http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/' rel='bookmark' title='Permanent Link: Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)'>Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)</a></li><li><a href='http://www.phpbsd.net/2007/01/31/transfiriendo-datos-con-la-libreria-curl-en-php/' rel='bookmark' title='Permanent Link: Transfiriendo datos con la librería cURL en PHP'>Transfiriendo datos con la librería cURL en PHP</a></li></ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)</title>
		<link>http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/</link>
		<comments>http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/#comments</comments>
		<pubDate>Sun, 04 Feb 2007 03:09:05 +0000</pubDate>
		<dc:creator>Oriol</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[error-log]]></category>
		<category><![CDATA[mime]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/</guid>
		<description><![CDATA[En el desarrollo de aplicaciones PHP es muy frecuente encontrarse con la necesidad de enviar algún tipo de email: bonitos en HTML a los usuarios, de debug, alertas, etc. Para enviar un correo electrónico en PHP disponemos de varias formas de hacerlo, lo más rápido es con las funciones incorporadas en el mismo lenguaje aunque [...]


Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/' rel='bookmark' title='Permanent Link: Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier'>Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier</a></li><li><a href='http://www.phpbsd.net/2007/12/12/como-interactuar-con-google-desde-php-usando-zend-framework/' rel='bookmark' title='Permanent Link: Como interactuar con Google desde PHP usando Zend Framework'>Como interactuar con Google desde PHP usando Zend Framework</a></li><li><a href='http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/' rel='bookmark' title='Permanent Link: Instalar clases PEAR en un hosting compartido'>Instalar clases PEAR en un hosting compartido</a></li></ul>]]></description>
			<content:encoded><![CDATA[<p>En el desarrollo de aplicaciones PHP es muy frecuente encontrarse con la necesidad de enviar algún tipo de email: bonitos en HTML a los usuarios, de debug, alertas, etc. Para enviar un correo electrónico en PHP disponemos de varias formas de hacerlo, lo más rápido es con las <a target="_blank" title="PHP: Funciones de Correo - Manual" href="http://es2.php.net/manual/es/ref.mail.php">funciones incorporadas en el mismo lenguaje</a> aunque también disponemos de una gran cantidad de clases y librerías ya hechas, como las <a target="_blank" title="PEAR :: Manual :: Mail" href="http://pear.php.net/manual/es/package.mail.php">PEAR Mail</a>. Como siempre el uso de librerías externas con muchas líneas de código empeoran el rendimiento y mantenimiento de nuestro software. Pero las PEAR Mail son bastante ligeras y, en mi opinión, muy útiles en los casos en que queremos enviar emails "bonitos" con HTML enviando también la versión texto, con attachments, imágenes, vídeos, y demás, así nos olvidamos de tener que gestionar todo lo necesario manualmente (cabeceras, codificaciones, extensiones <a target="_blank" title="Multipurpose Internet Mail Extensions - Wikipedia, la enciclopedia libre" href="http://es.wikipedia.org/wiki/MIME">MIME</a>, etc.). Aunque siempre se ha de valorar el uso que le vamos a dar de lo q ofrece y el número y tipo de emails q necesitamos enviar. A continuación detallo brevemente algunos métodos para enviar distintos tipos de email desde PHP.</p>
<p><strong>Función <a target="_blank" title="PHP: mail - Manual" href="http://es2.php.net/manual/es/function.mail.php">mail()</a></strong></p>
<p>Para enviar emails sencillos en modo texto el uso de la función <em>mail()</em> es sin lugar a dudas lo más cómodo. Su uso es el siguiente:</p>
<div class="syntax_hilite">
<div id="php-14">
<div class="php"><a href="http://www.php.net/mail"><span style="color:#000066;">mail</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'direccion@del.destinario.com'</span>,<span style="color:#FF0000;">'Asunto'</span>,<span style="color:#FF0000;">'Mensaje'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p>Devuelve TRUE en caso de éxito y FALSE en caso contrario. También podemos pasarle cabeceras adicionales como cuarto parámetro, esto puede ser útil, por ejemplo, para enviar mensajes HTML usando <em>mail()</em> pero a la mínima q necesites enviar emails un poco más complejos es recomendable usar las PEAR.</p>
<p><strong>Función <a target="_blank" title="PHP: error_log - Manual" href="http://es2.php.net/manual/es/function.error-log.php">error_log()</a></strong></p>
<p>Para todos aquellos emails de debug o alertas internas de nuestro software podemos usar <em>error_log()</em>. Con esta función podemos hacer log a distintos destinos: el log del sistema, un archivo, la conexión de debug y también enviar por email. Por ejemplo para enviarnos por email información acerca de una exception q nos salta en nuestro código:</p>
<div class="syntax_hilite">
<div id="php-15">
<div class="php">try <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; <span style="color:#FF9933; font-style:italic;">// código con posibles errores</span><br />
<span style="color:#006600; font-weight:bold;">&#125;</span> catch <span style="color:#006600; font-weight:bold;">&#40;</span>Exception <span style="color:#0000FF;">$e</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; <span style="color:#0000FF;">$msg</span> = <span style="color:#FF0000;">'ERROR #'</span>.<span style="color:#0000FF;">$e</span>-&gt;<span style="color:#006600;">getCode</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#FF0000;">"<span style="color:#000099; font-weight:bold;">\n</span>"</span>;<br />
&nbsp; <span style="color:#0000FF;">$msg</span> .= <span style="color:#0000FF;">$e</span>-&gt;<span style="color:#006600;">getMessage</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#FF0000;">"<span style="color:#000099; font-weight:bold;">\n</span>"</span>;<br />
&nbsp; <span style="color:#0000FF;">$msg</span> .= <a href="http://www.php.net/print_r"><span style="color:#000066;">print_r</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$e</span>-&gt;<span style="color:#006600;">getTrace</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,<span style="color:#000000; font-weight:bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; @<a href="http://www.php.net/error_log"><span style="color:#000066;">error_log</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$msg</span>, <span style="color:#CC66CC;">1</span>, <span style="color:#FF0000;">'direccion@del.destinario.com'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</div>
</div>
<p></p>
<p><strong>Clase <a target="_blank" title="PEAR :: Manual :: Mail_Mime" href="http://pear.php.net/manual/es/package.mail.mail-mime.php">PEAR Mail_mime</a></strong></p>
<p>Como comentaba esta es una de las clases existentes para el envío de emails con soporte de extensiones MIME, lo que permite enviar HTML con imágenes, vídeo, archivos adjuntos, etc. Este es un ejemplo sencillo de como enviar un email HTML con su versión texto y con un archivo adjunto:</p>
<div class="syntax_hilite">
<div id="php-16">
<div class="php"><span style="color:#616100;">require_once</span> <span style="color:#FF0000;">'Mail.php'</span>;<br />
<span style="color:#616100;">require_once</span> <span style="color:#FF0000;">'Mail/mime.php'</span>;<br />
<span style="color:#0000FF;">$destinario</span> = <span style="color:#FF0000;">'direccion@del.destinario.com'</span>;<br />
<span style="color:#0000FF;">$from</span> = <span style="color:#FF0000;">'direccion@del.from.com'</span>;<br />
<span style="color:#0000FF;">$asunto</span> = <span style="color:#FF0000;">'Asunto del mensaje'</span>;<br />
<span style="color:#0000FF;">$mensaje</span> = <span style="color:#FF0000;">'&lt;html&gt;&lt;head&gt;&lt;title&gt;'</span>.<span style="color:#0000FF;">$asunto</span>.<span style="color:#FF0000;">'&lt;/title&gt;&lt;/head&gt;'</span>.<span style="color:#FF0000;">"<span style="color:#000099; font-weight:bold;">\n</span>"</span>;<br />
<span style="color:#0000FF;">$mensaje</span> .= <span style="color:#FF0000;">'&lt;body&gt;&lt;p&gt;&lt;h1&gt;Hola&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;'</span>;<br />
<span style="color:#0000FF;">$mime</span> = <span style="color:#000000; font-weight:bold;">new</span> Mail_mime<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"<span style="color:#000099; font-weight:bold;">\n</span>"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">setTXTBody</span><span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/strip_tags"><span style="color:#000066;">strip_tags</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$mensaje</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">setHTMLBody</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$mensaje</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">addAttachment</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'fichero_adjunto.zip'</span>, <span style="color:#FF0000;">'application/zip'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$body</span> = <span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$hdrs</span> = <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'From'</span> =&gt; <span style="color:#0000FF;">$from</span>, <span style="color:#FF0000;">'Subject'</span> =&gt; <span style="color:#0000FF;">$asunto</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$hdrs</span> = <span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">headers</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$hdrs</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$mail</span> =&amp; <a href="http://www.php.net/mail"><span style="color:#000066;">Mail</span></a>::<span style="color:#006600;">factory</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'mail'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$res</span> = <span style="color:#0000FF;">$mail</span>-&gt;<span style="color:#006600;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$destinario</span>, <span style="color:#0000FF;">$hdrs</span>, <span style="color:#0000FF;">$body</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>PEAR::<span style="color:#006600;">isError</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$res</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#FF0000;">'error enviando el email'</span>;</div>
</div>
</div>
<p></p>
<p>Todos los métodos anteriormente descritos necesitan de un servidor de correo funcionando y las directivas de configuración del PHP correctamente fijadas. Si tienes un ISP un poco decente casi seguro q no tendrás ningún problema.</p>
<p>Una técnica alternativa a todos estos métodos y que no necesita de servidor de correo es usar sockets (función <a target="_blank" title="PHP: fsockopen - Manual" href="http://es2.php.net/manual/es/function.fsockopen.php">fsockopen()</a>) para mandar nosotros mismos los mensajes desde nuestro código. Se trata de hacer desde PHP el trabajo q antes nos hacía el servidor. Esto, en general, no es recomendable ya q puede presentar serios problemas d rendimiento y gestión de errores (nunca funcionará mejor nuestro código PHP q un <a target="_blank" title="Proyecto DoQmail - Documentación y soporte a qmail en castellano" href="http://www.es.qmail.org/">Qmail</a> :) y la única ventaja destacable q presenta, a parte de no necesitar d un servidor d correo, es disponer de un mayor control de lo que pasa cuando se envía el email. Podemos por ejemplo saber en el momento si el servidor del destinatario del correo existe y nos acepta el mensaje, etc... Aunque con los métodos descritos y leyendo los mensajes devueltos por el servidor de correo también puedes saber si todo va bien... como consejo, si tienes un servidor de correo úsalo.</p>


<p>Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/' rel='bookmark' title='Permanent Link: Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier'>Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier</a></li><li><a href='http://www.phpbsd.net/2007/12/12/como-interactuar-con-google-desde-php-usando-zend-framework/' rel='bookmark' title='Permanent Link: Como interactuar con Google desde PHP usando Zend Framework'>Como interactuar con Google desde PHP usando Zend Framework</a></li><li><a href='http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/' rel='bookmark' title='Permanent Link: Instalar clases PEAR en un hosting compartido'>Instalar clases PEAR en un hosting compartido</a></li></ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/feed/</wfw:commentRss>
		<slash:comments>74</slash:comments>
		</item>
	</channel>
</rss>

