Usted debe tratar var_dump($body)
para ver lo que realmente contiene $body
. Con la forma en que configuró cURL, $body
contendrá la respuesta del servidor o falsa, en caso de error. No hay forma de diferenciar entre una respuesta vacía o falsa con echo
. Es posible que la solicitud esté pasando muy bien, y el servidor simplemente no devuelve nada.
Sin embargo, como han dicho otros, su ruta de archivo parece inválida. getcwd()
no genera un /
final y deberá agregar uno para que el código funcione. Como dijiste que funciona en Linux, incluso sin la barra que falta, me pregunto cómo es encontrar tu archivo.
Le sugiero que cree una ruta al archivo relativo al script PHP que se está ejecutando, o proporcione una ruta absoluta y no confíe en getcwd()
que probablemente no devuelva lo que esperaba.El valor de getcwd()
puede ser impredecible en todos los sistemas y no es muy portátil.
Por ejemplo, si el archivo que está intentando escribir un mensaje reside en la misma carpeta que el script PHP:
$post = array('image' => '@image.jpg');
es suficiente. Si es necesario, proporcionar una ruta absoluta: $post = array('image' => '@/home/youruser/yourdomain/image.jpg');
Como dijo Terence, si necesita el código para ser portable a través de Linux & de Windows, considere el uso 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
¿Tiene cURL compilados en su instalación PHP en tu servidor de Windows? Muestra el mensaje de error dado. Puede verificar la instalación a través de una secuencia de comandos [phpinfo()] (http://php.net/manual/en/function.phpinfo.php). – Orbling
Error no mostrado. (error_reporting = on) – Dador
getcwd() no regresa con una barra al final, así que me falta esa, además ¿no debería usar una barra invertida en Windows en lugar de una barra diagonal? –