Я знаю, что это правда:
… вы можете опубликовать файл, который уже находится в файловой системе, путем префикса пути к файлу с помощью «@».
 Тем не менее, я пытаюсь выполнить POST файл с cURL, который не является локальным.  Он хранится на другом URL-адресе.  Скажем, эта фотография – логотип Google (это не так).  URL-адрес: http://img.ruphp.com/php/logo11w.png .  Поэтому я бы подумал, что вы сделаете что-то вроде этого: 
 $file = file("http://img.ruphp.com/php/logo11w.png"); // some more stuff // define POST data $post_data = array('somekey' => 'somevalue', 'image' => '@' . $file); 
  Однако, по всей видимости, это не работает.  Кроме того, я попытался использовать 'image' => '@' . file_get_contents($url)  'image' => '@' . file_get_contents($url) .  Опять же, это не сработало. 
Похоже, способ обойти это – использовать временный файл. Это единственное решение этой проблемы? В любом случае, как я могу решить эту проблему?
  Вы не можете использовать http url для пути к файлу на curl.  Вы должны использовать локальный файл.  Поэтому сначала загрузите файл во временный каталог. 
 file_put_contents("/var/tmp/xyz/output.jpg", file_get_contents("http://img.ruphp.com/php/logo11w.png")); 
Затем используйте этот временный файл в свой curl:
 'image' => '@/var/tmp/xyz/output.jpg'