Функция read_exif_data() устарела с PHP 7.2

#php #exif #php-7.2

#php #exif #php-7.2

Вопрос:

Я получаю этот отчет при выполнении совместимого теста в WP для PHP 7.3:

Функция read_exif_data() устарела с PHP 7.2; вместо этого используйте exif_read_data()

Должен ли я буквально просто изменить его, как он говорит, или функцию нужно переписать более подробно?

Это мой код:

 function ww_upload_photo() {

    // These files need to be included as dependencies when on the front end.

    require_once ABSPATH . 'wp-admin/includes/file.php';
    // Let WordPress handle the upload.

    // Remember, 'my_image_upload' is the name of our file input in our form above.

    foreach ($_FILES['files'] as $key => $val) {

        $file[$key] = $val[0];
    }

    $uploaded_file = wp_handle_upload($file, array(
        'test_form' => false,
        'test_type' => false,
    ));

    if ($uploaded_file amp;amp; !isset($uploaded_file['error'])) {

        // $filename should be the path to a file in the upload directory.

        $filename = $uploaded_file['file'];
        // The ID of the post this attachment is for.

        $parent_post_id = null;
        // Check the type of file. We'll use this as the 'post_mime_type'.

        $filetype = wp_check_filetype(basename($filename), null);
        // Get the path to the upload directory.

        $wp_upload_dir = wp_upload_dir();
        // Prepare an array of post data for the attachment.

        $attachment = array(
            'guid' => $wp_upload_dir['url'] . '/' . basename($filename),
            'post_mime_type' => 'image/jpeg',
            'post_title' => preg_replace('/.[^.] $/', '', basename($filename)),
            'post_content' => '',
            'post_status' => 'inherit',
        );

        // Insert the attachment.

        $attachment_id = wp_insert_attachment($attachment, $filename, $parent_post_id);
        $attachment_url = wp_get_attachment_url($attachment_id);
        $attachment_uri = get_attached_file($attachment_id);
        // $selection = json_decode(stripslashes($_POST['selection']), true);
        $image = wp_get_image_editor($attachment_uri);

        if (!is_wp_error($image)) {

            // $exif = exif($uploaded_file);

            $exif = read_exif_data($uploaded_file['file']);
            //We're only interested in the orientation
            $orientation = isset($exif['Orientation'])?$exif['Orientation']:0;

            switch($orientation){
                case 1: // nothing
                    break;
                case 2: // horizontal flip
                    $image->flip(true, false);
                    break;
                case 3: // 180 rotate left
                    $image->rotate(180);
                    break;
                case 4: // vertical flip
                    $image->flip(false, true);
                    break;
                case 5: // vertical flip   90 rotate right
                    $image->flip(false, true);
                    $image->rotate(-90);
                    break;
                case 6: // 90 rotate right
                    $image->rotate(-90);
                    break;
                case 7: // horizontal flip   90 rotate right
                    $image->flip(true, false);
                    $image->rotate(-90);
                    break;
                case 8:    // 90 rotate left
                    $image->rotate(90);
                    break;
            }

            #$image_old_size = $image->get_size();
            // $image->crop($selection['x'], $selection['y'], $selection['w'], $selection['h']);
            #$image->resize( 300, 300, true );
            $saved = $image->save($attachment_uri);
            #$image->save($uploaded_file['url']);
        }

        // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.

        require_once ABSPATH . 'wp-admin/includes/image.php';
        // Generate the metadata for the attachment, and update the database record.

        $attach_data = wp_generate_attachment_metadata($attachment_id, $filename);
        wp_update_attachment_metadata($attachment_id, $attach_data);
        $success = array(
            'attachment_id' => $attachment_id,
            'attachment_url' => $attachment_url,
            'attachment_meta' => $attach_data,
            'message' => 'File is valid, and was successfully uploaded.n',
        );

        update_field('order_media', true, $attachment_id);

        wp_send_json_success($success);
    } else {

        /**
         * Error generated by _wp_handle_upload()
         * @see _wp_handle_upload() in wp-admin/includes/file.php
         */
        wp_send_json_success($uploaded_file['error']);
    }

}
  

Ответ №1:

Согласно официальной документации read_exif_data() , это всего лишь псевдоним exif_read_data() функции, и этот псевдоним устарел в PHP 7.2. Таким образом, все, что вам нужно сделать, это изменить функцию, которую вы используете exif_read_data() . Они совместимы на 100%.

Комментарии:

1. Так что просто измените это read_exif_data на exif_read_data?

2. @Robibob Ага. Это точно такая же функция с 2 разными именами (или, точнее, имя и псевдоним). И псевдоним устарел, а не функция.