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
Puede usar el código proporcionado en el siguiente enlace para obtener una alternativa.
http://slopjong.de/2012/03/31/curl-follow-locations-with-safe_mode-enabled-or-open_basedir-set/
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
.