file_put_contents を使用して画像をアップロードすると、0 バイトのファイルが作成されます。
これが私が使用するコードです。Facebook の画像の URL を抽出し、Web サーバーに配置します。
$fb_image_url = 'https://example.com/229282.jpg'
$filename = substr($fb_image_url, strrpos($fb_image_url, '/') + 1);
file_put_contents('upload/user_pic/original/'.$filename, file_get_contents($fb_image_url));
これを行った後、サーバーはファイル名を正常に受信しますが、0 バイトです。
php.ini を確認したところ、allow_url_fopen がオンになっています。
アップロードフォルダの許可も問題ありません。