Вы должны попробовать var_dump($body)
, чтобы увидеть, что $body
действительно содержит. Когда вы сконфигурировали cURL, $body
будет содержать либо ответ сервера, либо false при ошибке. Невозможно различать пустой ответ или ложь с echo
. Возможно, запрос проходит очень хорошо, и сервер просто ничего не возвращает.
Однако, как говорили другие, ваш путь к файлу кажется недействительным. getcwd()
не выводит окончательный /
, и вам нужно будет добавить его, чтобы код работал. Поскольку вы сказали, что это работает на Linux, даже без недостающей косой черты, мне интересно, как это найти ваш файл.
Я предлагаю вам создать путь к файлу относительно запущенного скрипта PHP или предоставить абсолютный путь и не полагаться на getcwd()
, который, вероятно, не вернет то, что вы ожидаете.Значение getcwd()
может быть непредсказуемым в разных системах и не очень переносимо.
Например, если файл, который вы пытаетесь POST находится в той же папке, что и PHP скрипт:
$post = array('image' => '@image.jpg');
достаточно. В случае необходимости, обеспечить абсолютный путь: $post = array('image' => '@/home/youruser/yourdomain/image.jpg');
Как сказал Теренс, если вам нужен код, чтобы быть переносимыми в Linux & Windows, рассмотрите использование 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
Есть ли у вас Curl скомпилированные в вашей установке PHP на вашем сервере Windows? Покажите сообщение об ошибке. Вы можете проверить установку с помощью скрипта [phpinfo()] (http://php.net/manual/en/function.phpinfo.php). – Orbling
Ошибка не показана. (error_reporting = on) – Dador
getcwd() не возвращается с косой чертой на конце, поэтому мне не хватает этого, кроме того, что вы не должны использовать обратную косую черту на окнах вместо forwardlash? –