Bạn nên cố gắng var_dump($body)
để xem những gì $body
thực sự chứa. Với cách bạn định cấu hình cURL, $body
sẽ chứa phản hồi của máy chủ hoặc sai, do lỗi. Không có cách nào để phân biệt giữa một phản hồi trống hoặc sai với echo
. Có thể yêu cầu đang diễn ra tốt và máy chủ chỉ không trả lại gì cả.
Tuy nhiên, như những người khác đã nói, đường dẫn tệp của bạn có vẻ không hợp lệ. getcwd()
không xuất kết quả cuối cùng là /
và bạn sẽ cần thêm một mã để làm cho mã hoạt động. Kể từ khi bạn nói nó hoạt động trên Linux, ngay cả khi không có dấu gạch chéo còn thiếu, tôi tự hỏi làm thế nào nó là tìm tập tin của bạn.
Tôi khuyên bạn nên tạo đường dẫn đến tệp liên quan đến tập lệnh PHP đang chạy hoặc cung cấp đường dẫn tuyệt đối và không dựa vào getcwd()
có thể không trả về những gì bạn mong đợi.Giá trị của getcwd()
có thể không thể đoán trước trên các hệ thống và không phải là rất di động.
Ví dụ, nếu tập tin bạn đang cố gắng POST nằm trong cùng một thư mục như kịch bản PHP của bạn:
$post = array('image' => '@image.jpg');
là đủ. Nếu cần thiết, cung cấp một đường dẫn tuyệt đối: $post = array('image' => '@/home/youruser/yourdomain/image.jpg');
Như Terence nói, nếu bạn cần mã của bạn để được cầm tay trên Linux & Windows, xem xét sử dụng PHP's Predefined ConstantDIRECTORY_SEPARATOR
$url = "http://yoursite.com/upload.php";
// images\image.jpg on Windows images/image.jpg on Linux
$post = array('image' => '@images'.DIRECTORY_SEPARATOR.'image.jpg');
$this->ch = curl_init();
curl_setopt($this->ch, CURLOPT_URL, $url);
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->ch, CURLOPT_TIMEOUT, 30);
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($this->ch, CURLOPT_POST, 1);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post);
$body = curl_exec($this->ch);
var_dump($body);
getcwd()cURL
Bạn có cURL biên soạn để cài đặt PHP của bạn trên máy chủ windows của bạn? Hiển thị thông báo lỗi được cung cấp. Bạn có thể kiểm tra cài đặt thông qua tập lệnh [phpinfo()] (http://php.net/manual/en/function.phpinfo.php). – Orbling
Lỗi không được hiển thị. (error_reporting = on) – Dador
getcwd() không trở lại với dấu gạch chéo ở cuối, vì vậy tôi thiếu một cái, bên cạnh đó bạn không nên sử dụng dấu gạch chéo ngược trên cửa sổ thay vì một forwardslash? –