Please include the following files before using media_sideload_image() for it to work,
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
Reference, WP Codex: media_sideload_image