Lỗi có nghĩa là safe_mode hoặc open_basedir ĐƯỢC bật (có thể là open_basedir) có thể bạn không thể ghi đè lên nếu máy chủ của bạn có bất kỳ cài đặt bảo mật nào.
Vì vậy, bạn có thể lựa chọn
1) thay đổi máy chủ (không thực sự hấp dẫn tôi tưởng tượng)
2) sử dụng một chức năng tương tự như những người được tìm thấy trên trang curl_setopt php, tức là http://www.php.net/manual/en/function.curl-setopt.php#95027
Các sau đây là phiên bản cố định của hàm được chỉ định tại điểm 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;
}
}
vui, nhưng kịch bản hoạt động tốt trên máy chủ của tôi (rẻ và ảo), nhưng ông chủ sử dụng máy chủ lưu trữ ngu ngốc và không có mong muốn thay đổi. về chức năng này -i biết điều đó, khi tôi bắt đầu viết kịch bản theo cách thủ công, hãy gọi mỗi url, nhưng url cuối cùng sẽ không hoạt động, và chỉ sử dụng CURLOPT_FOLLOWLOCATION giúp tôi – kusanagi
Eek xin lỗi tôi đã không thực sự kiểm tra hàm, bạn ' lại phải nó không hoạt động (nó giả định tiêu đề vị trí không phải là cuối cùng) Tôi đã thêm một phiên bản sửa chữa tôi đã thử nghiệm để trả lời của tôi. – Rwky
Giải pháp của bạn có một vài lỗi. Regex phải là '[^ \ n]'. Khi đệ quy gọi 'curl_redirect_exec', bạn nên chuyển' $ curlopt_header'. –