Si dovrebbe cercare var_dump($body)
per vedere che cosa contiene realmente $body
. Con il modo in cui hai configurato cURL, $body
conterrà la risposta del server o falso, in caso di errore. Non c'è modo di distinguere tra una risposta vuota o falsa con echo
. È possibile che la richiesta stia andando bene, e il server non restituisce nulla.
Tuttavia, come altri hanno già detto, il percorso del file non è valido. getcwd()
non restituisce un valore finale /
e sarà necessario aggiungerne uno per far funzionare il codice. Dal momento che hai detto che funziona su Linux, anche senza la barra mancante, mi chiedo come sia trovare il tuo file.
Suggerisco di creare un percorso per il file relativo allo script PHP in esecuzione o fornire un percorso assoluto e non fare affidamento su getcwd()
che probabilmente non restituisce ciò che si aspetta.Il valore di getcwd()
può essere imprevedibile tra i sistemi e non è molto portabile.
Ad esempio, se il file che si sta tentando di POST risiede nella stessa cartella script PHP:
$post = array('image' => '@image.jpg');
è sufficiente. Se necessario, fornire un percorso assoluto: $post = array('image' => '@/home/youruser/yourdomain/image.jpg');
Come diceva Terenzio, se è necessario il codice per essere portabile su Linux & di Windows, è possibile utilizzare 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
Avete cURL compilati per l'installazione di PHP sul tuo server Windows? Mostra il messaggio di errore fornito. Puoi controllare l'installazione tramite uno script [phpinfo()] (http://php.net/manual/en/function.phpinfo.php). – Orbling
Errore non mostrato. (error_reporting = on) – Dador
getcwd() non torna con una barra alla fine, quindi mi manca quello, oltre a quello non dovresti usare una barra rovesciata su Windows invece di un forwardslash? –