Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema con la API de bitly (kevin marshal y robin monks)

Estas en el tema de problema con la API de bitly (kevin marshal y robin monks) en el foro de PHP en Foros del Web. Estoy trabajando con la API de bitly. He descargado la API bitlyPHP. En GitHub especifican los parámetros de la función para acortar la longURL Cita: ...
  #1 (permalink)  
Antiguo 15/10/2013, 11:09
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
problema con la API de bitly (kevin marshal y robin monks)

Estoy trabajando con la API de bitly.

He descargado la API bitlyPHP.

En GitHub especifican los parámetros de la función para acortar la longURL

Cita:
4. Use any of the functions as such:

$results = bitly_v3_shorten('http://knowabout.it', 'j.mp');
Realizo exactamente lo que dice ahí y al ejecutar una prueba me devuelve lo siguiente

Cita:
Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /var/www/vhosts/miservidor.com/httpdocs/models/bitly.php on line 1159 array(0) { }
La línea 1159 de la API está en la siguiente función, la marco con un comentario PHP

Código PHP:
Ver original
  1. /**
  2.  * Make a GET call to the bit.ly API.
  3.  *
  4.  * @param $uri
  5.  *   URI to call.
  6.  */
  7. function bitly_get_curl($uri) {
  8.   $output = "";
  9.   try {
  10.     $ch = curl_init($uri);
  11.     curl_setopt($ch, CURLOPT_HEADER, 0);
  12.     curl_setopt($ch, CURLOPT_TIMEOUT, 4);
  13.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
  14.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //esta es la línea 1159
  15.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  16.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  17.     $output = curl_exec($ch);
  18.   } catch (Exception $e) {
  19.   }
  20.   return $output;
  21. }

La función shorten que llama a esta función es la siguiente

Código PHP:
Ver original
  1. function bitly_v3_shorten($longUrl, $domain = '', $x_login = '', $x_apiKey = '') {
  2.   $result = array();
  3.   $url = bitly_oauth_api . "shorten?access_token=" . bitlyKey . "&longUrl=" . urlencode($longUrl);
  4.   if ($domain != '') {
  5.     $url .= "&domain=" . $domain;
  6.   }
  7.   if ($x_login != '' && $x_apiKey != '') {
  8.     $url .= "&x_login=" . $x_login . "&x_apiKey=" . $x_apiKey;
  9.   }
  10.   $output = json_decode(bitly_get_curl($url)); //aquí llama a la función donde genera el problema
  11.   if (isset($output->{'data'}->{'hash'})) {
  12.     $result['url'] = $output->{'data'}->{'url'};
  13.     $result['hash'] = $output->{'data'}->{'hash'};
  14.     $result['global_hash'] = $output->{'data'}->{'global_hash'};
  15.     $result['long_url'] = $output->{'data'}->{'long_url'};
  16.     $result['new_hash'] = $output->{'data'}->{'new_hash'};
  17.   }
  18.   return $result;
  19. }

¿A qué se puede deber este error? ¿es un problema de configuración del servidor, de configuración en tiempo de ejecución o de pasar unos parámetros erróneos?

La última posibilidad puede ser posible, ya que los parámetros que hay que pasar exactamente no los explica bien bitly ni los autores de las funciones.
__________________
Ayúdame a hacerlo por mi mismo.
  #2 (permalink)  
Antiguo 15/10/2013, 11:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Lee el manual, ahí se explica perfectamente el funcionamiento de los flags de configuración, en tu caso el error te indica CURLOPT_FOLLOWLOCATION.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/10/2013, 12:28
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Cita:
Iniciado por pateketrueke Ver Mensaje
Lee el manual, ahí se explica perfectamente el funcionamiento de los flags de configuración, en tu caso el error te indica CURLOPT_FOLLOWLOCATION.
En el manual, sobre CURLOPT_FOLLOWLOCATION dice

Cita:
TRUE para seguir cualquier encabezado "Location: " que el servidor envíe como parte del encabezado HTTP (observe la recursividad, PHP seguirá tantos header "Location: " como se envíen, a no ser que la opción CURLOPT_MAXREDIRS esté establecida).
En el código no hay ningún curl_setop con el flag CURLOPT_MAXREDIRS. Entonces no entiendo por qué da problemas el CURLOPT_FOLLOWLOCATION :S siendo que está a 1/true :S

Puedo poner los valores de las constantes que utiliza la función shorten para acortar URL's, a ver si es que los he asignado mal :S
__________________
Ayúdame a hacerlo por mi mismo.
  #4 (permalink)  
Antiguo 15/10/2013, 12:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

¿No lees lo que publicas?
Cita:
Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /var/www/vhosts/miservidor.com/httpdocs/models/bitly.php on line 1159 array(0) { }
Google: php open_basedir

No entiendo, el mensaje de error es tan claro que solo basta investigar un poco, no abrir un tema para que te manden a investigar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 15/10/2013, 15:24
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Cita:
Iniciado por pateketrueke Ver Mensaje
¿No lees lo que publicas?


Google: php open_basedir

No entiendo, el mensaje de error es tan claro que solo basta investigar un poco, no abrir un tema para que te manden a investigar.
No sabía qué era open_basedir, mucho menos que tuviera que ver directamente con la configuración de php.ini, si no sabía que eso en si es algo específico de PHP difícilmente puedo comenzar a investigar sobre ello.

Intuyo que tú dominas PHP a un nivel muy superior a mi y a otra gente que pide u ofrece ayuda en este foro. Pero tus conocimientos no te dan derecho a verme como una molestia por utilizar el foro para lo que está. No hay ninguna competición para ver quién sabe más, simplemente es un foro de ayuda. El que quiera ayudar ayuda, el que quiera pedir ayuda la pide y el que quiera hacer ambas cosas las puede hacer también, como es mi caso.

Por suerte o por desgracia este formato permite abrir tantos temas como hagan falta sin que resulte una carga para nadie. Abrir un tema solo implica eso, abrir un tema. La computación da mucho margen a los errores, si un documento está mal escrito se puede volver a comenzar o hacer versiones, no se talan árboles, no se gasta tinta, simplemente se produce en virtual.

En este foro sólo una vez cometí el mismo error que tú has tenido conmigo ahora, reflexioné y me di cuenta que eso más que generar un buen ambiente de aprendizaje, donde se estimula la curiosidad y las ganas de aprender más y más sobre programación se consigue lo contrario, un ambiente pedante, un ambiente que aleja a las personas para las que se destinó este foro.

Todo esto te lo digo desde el respeto que te tengo solo por el hecho de ofrecerte a ayudar a los demás, un respeto también por tus conocimientos. Llevo en este foro meses y he podido ver un gran ambiente donde se habla exclusivamente de programación y con una participación maravillosa por gente de todo tipo, totalmente iniciados y totalmente veteranos.

De todo corazón muchas gracias por tu ayuda pateketrueke

Ahora, volviendo al asunto del post, leyendo lo que me has indicado dice lo siguiente

Cita:
open_basedir
El límite de ficheros que puede abrir PHP en el árbol de directorios especificado, incluyendo el fichero en sí. Esta directiva NO se ve afectada si el Modo Seguro está activado (On) o desactivado (Off).
De aquí no entiendo dos cosas:

1) ¿Por qué me indica ese error si no intento abrir ningún directorio?

2) Aunque estuviera intentando abrir un directorio

¿Por qué me indica ese error si dice que "NO se ve afectada si el Modo Seguro está activado (On) o desactivado (Off)" siendo que en el Warning indica "when safe_mode is enabled"? :S
__________________
Ayúdame a hacerlo por mi mismo.
  #6 (permalink)  
Antiguo 15/10/2013, 15:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Vamos por partes:

Cita:
CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir
Ahí tenemos dos directivas: safe_mode y open_basedir.

Si alguna de las dos las tienes habilitadas entonces CURLOPT_FOLLOWLOCATION no se puede activar.

Revisa tu configuración y has un phpinfo() para revisar lo que tienes.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 15/10/2013, 15:29
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Revisaste que el modo seguro este desactivado?
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #8 (permalink)  
Antiguo 15/10/2013, 15:47
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

revisando el phpinfo(); veo que en la tabla core el safe_mode está off tanto en el local como en el master.

también en la tabla core, open_basedir en local tiene /var/www/vhosts/laweb.com/:/tmp/ y en master tiene no value

Entonces ¿es porque el open_basedir tiene un valor en el local?
__________________
Ayúdame a hacerlo por mi mismo.
  #9 (permalink)  
Antiguo 15/10/2013, 16:14
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Lo mas probable es que si, intenta cambiando el valor en el pho.ini o comentar la linea y prueba a ver si te.funciona.
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #10 (permalink)  
Antiguo 15/10/2013, 16:28
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Otro asunto es que a partir de PHP 5.3 se puede modificar la directiva open_basedir con ini_set() así que si estás usando una versión mayor a la 5.3 deberías revisar que en tu código no estes usando esta directiva (ya sea por tu propia cuenta o una librería externa)

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #11 (permalink)  
Antiguo 15/10/2013, 16:37
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

La versión PHP del servidor externo es la 5.3.3.

He buscado en la librería de bitly y no he encontrado nada, no he utilizado esa directiva en el resto de mi código pero he buscado por si acaso y tampoco.

El problema que tengo es que al ser un servidor externo voy a tener complicado, por no decir imposible, acceder al php.ini u otros archivos de configuración (httpd.conf ...) para tocar las entrañas de PHP.

Y si open_basedir no tiene configuración en tiempo de ejecución entonces ya solo me queda contactar con el servicio técnico y además seguir buscando si no es por un error mío, en concreto en los valores de las constantes, eso me tiene preocupado.

En cuanto sepa algo lo digo para dar a conocer cómo solucioné el problema.

Si se os ocurre algo decidlo, gracias!!! :D

EDITO

todo esto es raro porque con la API de twitter el mismo servidor no me dió ni un solo problema a nivel de archivos de configuración de PHP, apache, etc. :S siendo que ambas APIs son con oAuth
__________________
Ayúdame a hacerlo por mi mismo.
  #12 (permalink)  
Antiguo 15/10/2013, 18:27
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Prueba creando un archivo .htaccess en la raiz del sitio con este contenido:

Código htaccess:
Ver original
  1. php_admin_value open_basedir "none"

Y nos dices si te funciona.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #13 (permalink)  
Antiguo 16/10/2013, 00:27
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Cita:
Iniciado por jonni09lo Ver Mensaje
Prueba creando un archivo .htaccess en la raiz del sitio con este contenido:

Código htaccess:
Ver original
  1. php_admin_value open_basedir "none"

Y nos dices si te funciona.

Saludos
Me devuelve un error

Cita:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Leyendo el manual, he intentado desactivar safe_mode y open_basedir con directivas en ini_set pero el primer error persiste.

Puedo acceder al php.ini para ver el php.ini y el safe_mode está off.

El problema es que en el php.ini el open_basedir, en vez de NULL tiene la configuración mencionada (/var/www/vhosts/"miweb".com/:/tmp/)

Definitivamente voy a contactar con el servicio técnico.

Os cuento qué tal.
__________________
Ayúdame a hacerlo por mi mismo.
  #14 (permalink)  
Antiguo 16/10/2013, 04:31
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

He conseguido que el dueño del servidor cambie esa directiva en php.ini a none, y sigue indicando el mismo problema :S
__________________
Ayúdame a hacerlo por mi mismo.
  #15 (permalink)  
Antiguo 16/10/2013, 04:37
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

El valor predeterminado no es none, sino NULL: http://www.php.net/manual/es/ini.cor...i.open-basedir
__________________
- León, Guanajuato
- GV-Foto
  #16 (permalink)  
Antiguo 16/10/2013, 05:01
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Cita:
Iniciado por Triby Ver Mensaje
El valor predeterminado no es none, sino NULL: http://www.php.net/manual/es/ini.cor...i.open-basedir
lo se, pero la persona que lo ha cambiado me ha dicho que solo tenía esa opción. le he insistido pero nada, solo le permitía none. no es cpanel, es paralells plesk
__________________
Ayúdame a hacerlo por mi mismo.
  #17 (permalink)  
Antiguo 16/10/2013, 08:27
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Mira este enlace

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #18 (permalink)  
Antiguo 16/10/2013, 09:22
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Cita:
Iniciado por jonni09lo Ver Mensaje
Mira este enlace

Saludos
Muchas gracias jonni09lo por ese valiosísimo enlace.

No hay manera de actualizar o convencer a la persona encargada para que actualice y solucionar este error, así como tampoco poder reemplazar el archivo viejo por el nuevo y desactivar open_basedir. Tendré que parchear el problema creando mis propios shortlinks.

Muchísimas gracias a todos por su gran ayuda prestada.

Después de un día perdido de desarrollo, a reinventar la rueda :)

Saludos a todos!!! y gracias de nuevo.
__________________
Ayúdame a hacerlo por mi mismo.
  #19 (permalink)  
Antiguo 16/10/2013, 09:28
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Otra opción a parte de usar bitly es usar la API de Google, si no deseas reinventar la rueda y estas de animo para intentarlo

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #20 (permalink)  
Antiguo 16/10/2013, 09:41
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con la API de bitly (kevin marshal y robin monks)

Cita:
Iniciado por jonni09lo Ver Mensaje
Otra opción a parte de usar bitly es usar la API de Google, si no deseas reinventar la rueda y estas de animo para intentarlo

Saludos
Aunque ya tengo encargado hacerlo de esta manera personalizada, no me vendrá mal aprender dos APIs de este tipo por si acaso.

¿Ánimo para programar? pero si veo la vida en código :D

Muchas gracias!!!!
__________________
Ayúdame a hacerlo por mi mismo.

Etiquetas: api
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:27.