curlopt_postfields curlopt_header curl_setopt curl_exec php curl

curlopt_header - php curl con el error CURLOPT_FOLLOWLOCATION



curlopt_postfields json (4)

El error significa que safe_mode o open_basedir están habilitados (probablemente open_basedir) y que probablemente no pueda sobrescribir si su host tiene alguna configuración de seguridad decente.

Entonces tienes una opción

1) cambiar de host (no es realmente deseable, me imagino)

2) utilice una función similar a las que se encuentran en la página php curl_setopt, es decir, http://www.php.net/manual/en/function.curl-setopt.php#95027

La siguiente es una versión fija de la función especificada en el punto 2

function curl_redirect_exec($ch, &$redirects, $curlopt_header = false) { curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($http_code == 301 || $http_code == 302) { list($header) = explode("/r/n/r/n", $data, 2); $matches = array(); preg_match("/(Location:|URI:)[^(/n)]*/", $header, $matches); $url = trim(str_replace($matches[1], "", $matches[0])); $url_parsed = parse_url($url); if (isset($url_parsed)) { curl_setopt($ch, CURLOPT_URL, $url); $redirects++; return curl_redirect_exec($ch, $redirects, $curlopt_header); } } if ($curlopt_header) { return $data; } else { list(, $body) = explode("/r/n/r/n", $data, 2); return $body; } }

recibí un error

CURLOPT_FOLLOWLOCATION no se puede activar cuando safe_mode está habilitado o se establece un open_basedir en

googleo muchas soluciones, pero con este sitio no funcionan. solo necesita CURLOPT_FOLLOWLOCATION. El hoster estúpido no quiere habilitar safe_mode o open_basedir. ¿Puedo habilitarlos por mí mismo, puede crear htaccess con algunos parámetros?


Hola, arreglo la adición de esta condición:

$safeMode = @ini_get(''safe_mode''); $openBasedir = @ini_get(''open_basedir''); if (empty($safeMode) && empty($openBasedir)) { curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true); }else curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

y agregando en mi archivo .htaccess

php_flag safe_mode off php_flag open_basedir off



Si especifica que solo se permiten los protocolos http y https durante el redireccionamiento con CURLOPT_REDIR_PROTOCOLS , podrá usar CURLOPT_FOLLOWLOCATION sin safe_mode o open_basedir .