Changeset 59060
- Timestamp:
- 09/18/2024 07:10:56 PM (7 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/class-wp-debug-data.php
r59011 r59060 85 85 'wp-plugins-active' => array(), 86 86 'wp-plugins-inactive' => array(), 87 'wp-media' => array(),87 'wp-media' => self::get_wp_media(), 88 88 'wp-server' => self::get_wp_server(), 89 89 'wp-database' => self::get_wp_database(), … … 210 210 'show_count' => true, 211 211 'fields' => array(), 212 );213 214 $info['wp-media'] = array(215 'label' => __( 'Media Handling' ),216 'fields' => array(),217 212 ); 218 213 … … 348 343 $dropin_descriptions = _get_dropins(); 349 344 350 // Spare few function calls.351 $not_available = __( 'Not available' );352 353 345 foreach ( $dropins as $dropin_key => $dropin ) { 354 346 $info['wp-dropins']['fields'][ sanitize_text_field( $dropin_key ) ] = array( … … 358 350 ); 359 351 } 360 361 // Populate the media fields.362 $info['wp-media']['fields']['image_editor'] = array(363 'label' => __( 'Active editor' ),364 'value' => _wp_image_editor_choose(),365 );366 367 // Get ImageMagic information, if available.368 if ( class_exists( 'Imagick' ) ) {369 // Save the Imagick instance for later use.370 $imagick = new Imagick();371 $imagemagick_version = $imagick->getVersion();372 } else {373 $imagemagick_version = __( 'Not available' );374 }375 376 $info['wp-media']['fields']['imagick_module_version'] = array(377 'label' => __( 'ImageMagick version number' ),378 'value' => ( is_array( $imagemagick_version ) ? $imagemagick_version['versionNumber'] : $imagemagick_version ),379 );380 381 $info['wp-media']['fields']['imagemagick_version'] = array(382 'label' => __( 'ImageMagick version string' ),383 'value' => ( is_array( $imagemagick_version ) ? $imagemagick_version['versionString'] : $imagemagick_version ),384 );385 386 $imagick_version = phpversion( 'imagick' );387 388 $info['wp-media']['fields']['imagick_version'] = array(389 'label' => __( 'Imagick version' ),390 'value' => ( $imagick_version ) ? $imagick_version : __( 'Not available' ),391 );392 393 if ( ! function_exists( 'ini_get' ) ) {394 $info['wp-media']['fields']['ini_get'] = array(395 'label' => __( 'File upload settings' ),396 'value' => sprintf(397 /* translators: %s: ini_get() */398 __( 'Unable to determine some settings, as the %s function has been disabled.' ),399 'ini_get()'400 ),401 'debug' => 'ini_get() is disabled',402 );403 } else {404 // Get the PHP ini directive values.405 $file_uploads = ini_get( 'file_uploads' );406 $post_max_size = ini_get( 'post_max_size' );407 $upload_max_filesize = ini_get( 'upload_max_filesize' );408 $max_file_uploads = ini_get( 'max_file_uploads' );409 $effective = min( wp_convert_hr_to_bytes( $post_max_size ), wp_convert_hr_to_bytes( $upload_max_filesize ) );410 411 // Add info in Media section.412 $info['wp-media']['fields']['file_uploads'] = array(413 'label' => __( 'File uploads' ),414 'value' => $file_uploads ? __( 'Enabled' ) : __( 'Disabled' ),415 'debug' => $file_uploads,416 );417 $info['wp-media']['fields']['post_max_size'] = array(418 'label' => __( 'Max size of post data allowed' ),419 'value' => $post_max_size,420 );421 $info['wp-media']['fields']['upload_max_filesize'] = array(422 'label' => __( 'Max size of an uploaded file' ),423 'value' => $upload_max_filesize,424 );425 $info['wp-media']['fields']['max_effective_size'] = array(426 'label' => __( 'Max effective file size' ),427 'value' => size_format( $effective ),428 );429 $info['wp-media']['fields']['max_file_uploads'] = array(430 'label' => __( 'Max simultaneous file uploads' ),431 'value' => $max_file_uploads,432 );433 }434 435 // If Imagick is used as our editor, provide some more information about its limitations.436 if ( 'WP_Image_Editor_Imagick' === _wp_image_editor_choose() && isset( $imagick ) && $imagick instanceof Imagick ) {437 $limits = array(438 'area' => ( defined( 'imagick::RESOURCETYPE_AREA' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_AREA ) ) : $not_available ),439 'disk' => ( defined( 'imagick::RESOURCETYPE_DISK' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_DISK ) : $not_available ),440 'file' => ( defined( 'imagick::RESOURCETYPE_FILE' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_FILE ) : $not_available ),441 'map' => ( defined( 'imagick::RESOURCETYPE_MAP' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MAP ) ) : $not_available ),442 'memory' => ( defined( 'imagick::RESOURCETYPE_MEMORY' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MEMORY ) ) : $not_available ),443 'thread' => ( defined( 'imagick::RESOURCETYPE_THREAD' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_THREAD ) : $not_available ),444 'time' => ( defined( 'imagick::RESOURCETYPE_TIME' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_TIME ) : $not_available ),445 );446 447 $limits_debug = array(448 'imagick::RESOURCETYPE_AREA' => ( defined( 'imagick::RESOURCETYPE_AREA' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_AREA ) ) : 'not available' ),449 'imagick::RESOURCETYPE_DISK' => ( defined( 'imagick::RESOURCETYPE_DISK' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_DISK ) : 'not available' ),450 'imagick::RESOURCETYPE_FILE' => ( defined( 'imagick::RESOURCETYPE_FILE' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_FILE ) : 'not available' ),451 'imagick::RESOURCETYPE_MAP' => ( defined( 'imagick::RESOURCETYPE_MAP' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MAP ) ) : 'not available' ),452 'imagick::RESOURCETYPE_MEMORY' => ( defined( 'imagick::RESOURCETYPE_MEMORY' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MEMORY ) ) : 'not available' ),453 'imagick::RESOURCETYPE_THREAD' => ( defined( 'imagick::RESOURCETYPE_THREAD' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_THREAD ) : 'not available' ),454 'imagick::RESOURCETYPE_TIME' => ( defined( 'imagick::RESOURCETYPE_TIME' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_TIME ) : 'not available' ),455 );456 457 $info['wp-media']['fields']['imagick_limits'] = array(458 'label' => __( 'Imagick Resource Limits' ),459 'value' => $limits,460 'debug' => $limits_debug,461 );462 463 try {464 $formats = Imagick::queryFormats( '*' );465 } catch ( Exception $e ) {466 $formats = array();467 }468 469 $info['wp-media']['fields']['imagemagick_file_formats'] = array(470 'label' => __( 'ImageMagick supported file formats' ),471 'value' => ( empty( $formats ) ) ? __( 'Unable to determine' ) : implode( ', ', $formats ),472 'debug' => ( empty( $formats ) ) ? 'Unable to determine' : implode( ', ', $formats ),473 );474 }475 476 // Get GD information, if available.477 if ( function_exists( 'gd_info' ) ) {478 $gd = gd_info();479 } else {480 $gd = false;481 }482 483 $info['wp-media']['fields']['gd_version'] = array(484 'label' => __( 'GD version' ),485 'value' => ( is_array( $gd ) ? $gd['GD Version'] : $not_available ),486 'debug' => ( is_array( $gd ) ? $gd['GD Version'] : 'not available' ),487 );488 489 $gd_image_formats = array();490 $gd_supported_formats = array(491 'GIF Create' => 'GIF',492 'JPEG' => 'JPEG',493 'PNG' => 'PNG',494 'WebP' => 'WebP',495 'BMP' => 'BMP',496 'AVIF' => 'AVIF',497 'HEIF' => 'HEIF',498 'TIFF' => 'TIFF',499 'XPM' => 'XPM',500 );501 502 foreach ( $gd_supported_formats as $format_key => $format ) {503 $index = $format_key . ' Support';504 if ( isset( $gd[ $index ] ) && $gd[ $index ] ) {505 array_push( $gd_image_formats, $format );506 }507 }508 509 if ( ! empty( $gd_image_formats ) ) {510 $info['wp-media']['fields']['gd_formats'] = array(511 'label' => __( 'GD supported file formats' ),512 'value' => implode( ', ', $gd_image_formats ),513 );514 }515 516 // Get Ghostscript information, if available.517 if ( function_exists( 'exec' ) ) {518 $gs = exec( 'gs --version' );519 520 if ( empty( $gs ) ) {521 $gs = $not_available;522 $gs_debug = 'not available';523 } else {524 $gs_debug = $gs;525 }526 } else {527 $gs = __( 'Unable to determine if Ghostscript is installed' );528 $gs_debug = 'unknown';529 }530 531 $info['wp-media']['fields']['ghostscript_version'] = array(532 'label' => __( 'Ghostscript version' ),533 'value' => $gs,534 'debug' => $gs_debug,535 );536 352 537 353 // List all available plugins. … … 1218 1034 1219 1035 /** 1036 * Gets the WordPress media section of the debug data. 1037 * 1038 * @since 6.7.0 1039 * 1040 * @throws ImagickException 1041 * @return array 1042 */ 1043 public static function get_wp_media(): array { 1044 // Spare few function calls. 1045 $not_available = __( 'Not available' ); 1046 1047 // Populate the media fields. 1048 $fields['image_editor'] = array( 1049 'label' => __( 'Active editor' ), 1050 'value' => _wp_image_editor_choose(), 1051 ); 1052 1053 // Get ImageMagic information, if available. 1054 if ( class_exists( 'Imagick' ) ) { 1055 // Save the Imagick instance for later use. 1056 $imagick = new Imagick(); 1057 $imagemagick_version = $imagick->getVersion(); 1058 } else { 1059 $imagemagick_version = __( 'Not available' ); 1060 } 1061 1062 $fields['imagick_module_version'] = array( 1063 'label' => __( 'ImageMagick version number' ), 1064 'value' => ( is_array( $imagemagick_version ) ? $imagemagick_version['versionNumber'] : $imagemagick_version ), 1065 ); 1066 1067 $fields['imagemagick_version'] = array( 1068 'label' => __( 'ImageMagick version string' ), 1069 'value' => ( is_array( $imagemagick_version ) ? $imagemagick_version['versionString'] : $imagemagick_version ), 1070 ); 1071 1072 $imagick_version = phpversion( 'imagick' ); 1073 1074 $fields['imagick_version'] = array( 1075 'label' => __( 'Imagick version' ), 1076 'value' => ( $imagick_version ) ? $imagick_version : __( 'Not available' ), 1077 ); 1078 1079 if ( ! function_exists( 'ini_get' ) ) { 1080 $fields['ini_get'] = array( 1081 'label' => __( 'File upload settings' ), 1082 'value' => sprintf( 1083 /* translators: %s: ini_get() */ 1084 __( 'Unable to determine some settings, as the %s function has been disabled.' ), 1085 'ini_get()' 1086 ), 1087 'debug' => 'ini_get() is disabled', 1088 ); 1089 } else { 1090 // Get the PHP ini directive values. 1091 $file_uploads = ini_get( 'file_uploads' ); 1092 $post_max_size = ini_get( 'post_max_size' ); 1093 $upload_max_filesize = ini_get( 'upload_max_filesize' ); 1094 $max_file_uploads = ini_get( 'max_file_uploads' ); 1095 $effective = min( wp_convert_hr_to_bytes( $post_max_size ), wp_convert_hr_to_bytes( $upload_max_filesize ) ); 1096 1097 // Add info in Media section. 1098 $fields['file_uploads'] = array( 1099 'label' => __( 'File uploads' ), 1100 'value' => $file_uploads ? __( 'Enabled' ) : __( 'Disabled' ), 1101 'debug' => $file_uploads, 1102 ); 1103 $fields['post_max_size'] = array( 1104 'label' => __( 'Max size of post data allowed' ), 1105 'value' => $post_max_size, 1106 ); 1107 $fields['upload_max_filesize'] = array( 1108 'label' => __( 'Max size of an uploaded file' ), 1109 'value' => $upload_max_filesize, 1110 ); 1111 $fields['max_effective_size'] = array( 1112 'label' => __( 'Max effective file size' ), 1113 'value' => size_format( $effective ), 1114 ); 1115 $fields['max_file_uploads'] = array( 1116 'label' => __( 'Max simultaneous file uploads' ), 1117 'value' => $max_file_uploads, 1118 ); 1119 } 1120 1121 // If Imagick is used as our editor, provide some more information about its limitations. 1122 if ( 'WP_Image_Editor_Imagick' === _wp_image_editor_choose() && isset( $imagick ) && $imagick instanceof Imagick ) { 1123 $limits = array( 1124 'area' => ( defined( 'imagick::RESOURCETYPE_AREA' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_AREA ) ) : $not_available ), 1125 'disk' => ( defined( 'imagick::RESOURCETYPE_DISK' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_DISK ) : $not_available ), 1126 'file' => ( defined( 'imagick::RESOURCETYPE_FILE' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_FILE ) : $not_available ), 1127 'map' => ( defined( 'imagick::RESOURCETYPE_MAP' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MAP ) ) : $not_available ), 1128 'memory' => ( defined( 'imagick::RESOURCETYPE_MEMORY' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MEMORY ) ) : $not_available ), 1129 'thread' => ( defined( 'imagick::RESOURCETYPE_THREAD' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_THREAD ) : $not_available ), 1130 'time' => ( defined( 'imagick::RESOURCETYPE_TIME' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_TIME ) : $not_available ), 1131 ); 1132 1133 $limits_debug = array( 1134 'imagick::RESOURCETYPE_AREA' => ( defined( 'imagick::RESOURCETYPE_AREA' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_AREA ) ) : 'not available' ), 1135 'imagick::RESOURCETYPE_DISK' => ( defined( 'imagick::RESOURCETYPE_DISK' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_DISK ) : 'not available' ), 1136 'imagick::RESOURCETYPE_FILE' => ( defined( 'imagick::RESOURCETYPE_FILE' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_FILE ) : 'not available' ), 1137 'imagick::RESOURCETYPE_MAP' => ( defined( 'imagick::RESOURCETYPE_MAP' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MAP ) ) : 'not available' ), 1138 'imagick::RESOURCETYPE_MEMORY' => ( defined( 'imagick::RESOURCETYPE_MEMORY' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MEMORY ) ) : 'not available' ), 1139 'imagick::RESOURCETYPE_THREAD' => ( defined( 'imagick::RESOURCETYPE_THREAD' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_THREAD ) : 'not available' ), 1140 'imagick::RESOURCETYPE_TIME' => ( defined( 'imagick::RESOURCETYPE_TIME' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_TIME ) : 'not available' ), 1141 ); 1142 1143 $fields['imagick_limits'] = array( 1144 'label' => __( 'Imagick Resource Limits' ), 1145 'value' => $limits, 1146 'debug' => $limits_debug, 1147 ); 1148 1149 try { 1150 $formats = Imagick::queryFormats( '*' ); 1151 } catch ( Exception $e ) { 1152 $formats = array(); 1153 } 1154 1155 $fields['imagemagick_file_formats'] = array( 1156 'label' => __( 'ImageMagick supported file formats' ), 1157 'value' => ( empty( $formats ) ) ? __( 'Unable to determine' ) : implode( ', ', $formats ), 1158 'debug' => ( empty( $formats ) ) ? 'Unable to determine' : implode( ', ', $formats ), 1159 ); 1160 } 1161 1162 // Get GD information, if available. 1163 if ( function_exists( 'gd_info' ) ) { 1164 $gd = gd_info(); 1165 } else { 1166 $gd = false; 1167 } 1168 1169 $fields['gd_version'] = array( 1170 'label' => __( 'GD version' ), 1171 'value' => ( is_array( $gd ) ? $gd['GD Version'] : $not_available ), 1172 'debug' => ( is_array( $gd ) ? $gd['GD Version'] : 'not available' ), 1173 ); 1174 1175 $gd_image_formats = array(); 1176 $gd_supported_formats = array( 1177 'GIF Create' => 'GIF', 1178 'JPEG' => 'JPEG', 1179 'PNG' => 'PNG', 1180 'WebP' => 'WebP', 1181 'BMP' => 'BMP', 1182 'AVIF' => 'AVIF', 1183 'HEIF' => 'HEIF', 1184 'TIFF' => 'TIFF', 1185 'XPM' => 'XPM', 1186 ); 1187 1188 foreach ( $gd_supported_formats as $format_key => $format ) { 1189 $index = $format_key . ' Support'; 1190 if ( isset( $gd[ $index ] ) && $gd[ $index ] ) { 1191 array_push( $gd_image_formats, $format ); 1192 } 1193 } 1194 1195 if ( ! empty( $gd_image_formats ) ) { 1196 $fields['gd_formats'] = array( 1197 'label' => __( 'GD supported file formats' ), 1198 'value' => implode( ', ', $gd_image_formats ), 1199 ); 1200 } 1201 1202 // Get Ghostscript information, if available. 1203 if ( function_exists( 'exec' ) ) { 1204 $gs = exec( 'gs --version' ); 1205 1206 if ( empty( $gs ) ) { 1207 $gs = $not_available; 1208 $gs_debug = 'not available'; 1209 } else { 1210 $gs_debug = $gs; 1211 } 1212 } else { 1213 $gs = __( 'Unable to determine if Ghostscript is installed' ); 1214 $gs_debug = 'unknown'; 1215 } 1216 1217 $fields['ghostscript_version'] = array( 1218 'label' => __( 'Ghostscript version' ), 1219 'value' => $gs, 1220 'debug' => $gs_debug, 1221 ); 1222 1223 return array( 1224 'label' => __( 'Media Handling' ), 1225 'fields' => $fields, 1226 ); 1227 } 1228 1229 1230 /** 1220 1231 * Gets the WordPress plugins section of the debug data. 1221 1232 *
Note: See TracChangeset
for help on using the changeset viewer.