Tag Archives: cURL

RSS feeds joomla detras de un proxy

FuenEstaba experimentando un problema con joomla para cargar las entradas RSS de un sitio externo, recibía este mensaje de error:

Al revisar el log de Apache en /var/log/httpd/error_log pude ver que el error se estaba disparando en SimplePie.php. En Joomla 1.5 este fichero se usa para realizar las tareas relacionadas a la sindicación RSS.
El servidor se encuentra detrás de un proxy, sin acceso directo a internet, por lo tanto tenemos que indicarle a cURL de alguna manera que use el proxy para conectarse a internet, encontré una solución para realizar ésto en Windows y una más simple para hacerlo en Linux, ésto debido a que no pude hallar el archivo de configuración de inicio de apache en Windows, /etc/sysconfig/httpd, si sabes dónde está dimelo por favor.
Solución Windows:
1. Activar la extensión cURL, en el caso de que ésta se encuentre desactivada.
Abrir php.ini
Descomentar la siguiente línea:
</pre>
</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">extension=php_curl.dll</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">
extension=php_curl.dll
Steps to resolve:
I enabled the cUrl extension in php.ini (running on a IIS platform)
Changed the code around line 6536:
curl_setopt($fp, CURLOPT_PROXY, $ip); curl_setopt($fp, CURLOPT_PROXYPORT, $port); curl_setopt($fp, CURLOPT_PROXYUSERPWD, $login . ‘:’ . $passwd);
where $ip is the proxy IP Address, $port is the port and $login:$password is the proxy authentication.
After this, I can load in external RSS feeds! YAY
here is an easy wsy to do this: If you have installed curl package on your machinge, Joomla (well at least in 1.5) will attempt to use that first instead of making the socke call. Curl looks for the environment variable http_proxy. So just set that to whatever your proxy is:
E.g. for unix: (windows- sorry folks make the switch)
export http_proxy=http://proxy.bla:8080
If there is proxy authentication:
export http_proxy=http://USERNAME:PASSWORD@proxy.bla:8080
Put this line in the startup config file for apache: eg /etc/sysconfig/httpd (lor linux)
Just restart httpd and joomla RSS will work now. Try it.
Steven

Estaba experimentando un problema con joomla para cargar las entradas RSS de un sitio externo, recibía este mensaje de error:

Error al cargar los datos feed
Error al cargar los datos feed

Al revisar el log de Apache en /var/log/httpd/error_log pude ver que el error se estaba disparando en SimplePie.php. En Joomla 1.5 este fichero se usa para realizar las tareas relacionadas a la sindicación RSS.

El servidor se encuentra detrás de un proxy, sin acceso directo a internet, por lo tanto tenemos que indicarle a cURL de alguna manera que use el proxy para conectarse a internet, encontré una solución para realizar ésto en Windows y una más simple para hacerlo en Linux, ésto debido a que no pude hallar el archivo de configuración de inicio de apache en Windows, que se puede encontrar aqui: /etc/sysconfig/httpd en Linux.

Solución Windows:

1. Activar la extensión cURL, en el caso de que ésta se encuentre desactivada.

Abrir php.ini

Descomentar la siguiente línea:


;extension=php_curl.dll

Añadimos las siguiente líneas después de la línea 6536 de SimplePie.php


curl_setopt($fp, CURLOPT_PROXY, $proxyHost);

curl_setopt($fp, CURLOPT_PROXYPORT, $proxyPort);

curl_setopt($fp, CURLOPT_PROXYUSERPWD, $login . ':' . $passwd);

Naturalmente tenemos que definir las variables con los datos de nuestro proxy, la tercera línea es opcional, podemos comentarla.

Solución Linux:

Esta solución se basa en el hecho de que cURL hace uso de la variable de entorno http_proxy disponible para el usuario que está ejecutando la instancia de Apache.

Por lo tanto en linux podemos hacer esto en el script de arranque global (para que afecte a todos los usuarios, incluyendo Apache).


export http_proxy=http://proxy.bla:8080

Si el proxy requiere autenticación:


export http_proxy=http://USERNAME:PASSWORD@proxy.bla:8080

O sino agregamos una de estas líneas a:

/etc/sysconfig/httpd

Y reiniciamos apache


#service httpd restart

Fuentes:
http://forum.joomla.org/viewtopic.php?p=1481041