2012-09-04 7 views
8

Estoy tratando de procesar el resultado de $data = curl_exec($ch); en lugar de imprimirlo en la pantalla. Con el fin de lograr que establece la opción CURLOPT_RETURNTRANSFER a true así:CURLOPT_RETURNTRANSFER establecido en verdadero no funciona en el servidor de hosting

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

En mi servidor local, esto funciona como se esperaba, pero cuando pongo el mismo archivo en línea en mi servidor no funciona.

Cuando configuro CURLOPT_RETURNTRANSFER en false, funciona.

¿Qué estoy haciendo mal?

Respuesta

17

Si establece CURLOPT_RETURNTRANSFER a true o 1 entonces el valor de retorno de curl_exec será el resultado real de la operación exitosa. En otras palabras, no devolverá TRUE en caso de éxito. Aunque devolverá FALSE en caso de error.

Como se describe en la devuelven valores de la sección de la página manual de curl-exec PHP: http://php.net/manual/function.curl-exec.php

debería habilitar la opción CURLOPT_FOLLOWLOCATION redirecciones pero esto sería un problema si el servidor está en safe_mode y/o open_basedir es, en efecto, que puede causar problemas con curl también.

+1

tal vez me hizo la pregunta erróneamente. Quiero que se devuelva el resultado en la variable. Así que establecí CURLOPT_RETURNTRANSFER en verdadero y debería hacerlo, pero no en el servidor de alojamiento pero en el servidor local funciona bien. tal vez algunas configuraciones en php ini no están configuradas, no lo sé. –

+0

@MarcelGentSimonis Edité mi respuesta, verifique qué safe_mode y open_basedir están configurados. Es probable que su máquina local los haya deshabilitado. –

+0

Tenga en cuenta que si no se establece en verdadero, el retorno de curl se generará como parte de ** su ** respuesta. Tómese una hora para darse cuenta de que la extraña salida en la parte superior de la página se debe a que curl dio como resultado su respuesta. –

0

Sólo trate de esta línea:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

después:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
+2

¿Por qué? ¿Qué hace esto? ¿Cómo podría esto ayudar al OP? Elabore su respuesta: debe ayudar al OP a entender lo que está mal, no hacerlo "probar cosas al azar" :-) –

Cuestiones relacionadas