media_handle_sideload kills the page without any errors
-
This is a weird issue. I’ve made a little function to download an image from an external source and add it as an attachment. Here’s the code:
function download_image_copy( $url, $desc = '' ) { require_once(ABSPATH . 'wp-admin/includes/file.php'); require_once(ABSPATH . 'wp-admin/includes/media.php'); $types = 'jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG'; $file_array = array(); $file_array['tmp_name'] = download_url( $url ); if( is_wp_error( $file_array['tmp_name'] ) ) { @unlink( $file_array['tmp_name'] ); return $url; } $pathparts = pathinfo( $file_array['tmp_name'] ); $file_array['name'] = basename( $url ); // fix file extension if( '' == $pathparts['extension'] || ! in_array( $pathparts['extension'], explode( '|', $types ) ) ) { $_file = $pathparts['dirname'] . DS . $file_array['name']; rename( $file_array['tmp_name'], $_file ); $file_array['name'] = basename( $_file ); $file_array['tmp_name'] = $_file; } $id = media_handle_sideload( $file_array, 1, $desc ); echo 'Wow! We never reach this place!'; if( is_wp_error( $id ) ) { @unlink( $file_array['tmp_name'] ); return $url; } $src = wp_get_attachment_url( $id ); return $src; } // let's try it out echo download_image_copy( 'https://dribbble.s3.amazonaws.com/users/81899/screenshots/1170460/untitled-1.png' );
Sidenote: Sorry for pasting this code here. I can’t access PasteBin.
The page stops just after calling the media_handle_sideload function, it actually never reaches that echo statement in the next line. I have enabled the debug mode but it doesn’t display any errors.
That “fix file extension” block in the code was added because for me the download_url returns any file with an extension of “tmp” and so media_handle_sideload function was throwing “wrong media type” error. I have inspected the $file_array var and the path to the file and it’s name are correct and exists on my filesystem.Thanks for shedding any light on this.
- The topic ‘media_handle_sideload kills the page without any errors’ is closed to new replies.