WP_Site_Health::get_test_file_uploads(): array

In this article

Tests if ‘file_uploads’ directive in PHP.ini is turned off.

Return

array The test results.

Source

public function get_test_file_uploads() {
	$result = array(
		'label'       => __( 'Files can be uploaded' ),
		'status'      => 'good',
		'badge'       => array(
			'label' => __( 'Performance' ),
			'color' => 'blue',
		),
		'description' => sprintf(
			'<p>%s</p>',
			sprintf(
				/* translators: 1: file_uploads, 2: php.ini */
				__( 'The %1$s directive in %2$s determines if uploading files is allowed on your site.' ),
				'<code>file_uploads</code>',
				'<code>php.ini</code>'
			)
		),
		'actions'     => '',
		'test'        => 'file_uploads',
	);

	if ( ! function_exists( 'ini_get' ) ) {
		$result['status']       = 'critical';
		$result['description'] .= sprintf(
			/* translators: %s: ini_get() */
			__( 'The %s function has been disabled, some media settings are unavailable because of this.' ),
			'<code>ini_get()</code>'
		);
		return $result;
	}

	if ( empty( ini_get( 'file_uploads' ) ) ) {
		$result['status']       = 'critical';
		$result['description'] .= sprintf(
			'<p>%s</p>',
			sprintf(
				/* translators: 1: file_uploads, 2: 0 */
				__( '%1$s is set to %2$s. You won\'t be able to upload files on your site.' ),
				'<code>file_uploads</code>',
				'<code>0</code>'
			)
		);
		return $result;
	}

	$post_max_size       = ini_get( 'post_max_size' );
	$upload_max_filesize = ini_get( 'upload_max_filesize' );

	if ( wp_convert_hr_to_bytes( $post_max_size ) < wp_convert_hr_to_bytes( $upload_max_filesize ) ) {
		$result['label'] = sprintf(
			/* translators: 1: post_max_size, 2: upload_max_filesize */
			__( 'The "%1$s" value is smaller than "%2$s"' ),
			'post_max_size',
			'upload_max_filesize'
		);
		$result['status'] = 'recommended';

		if ( 0 === wp_convert_hr_to_bytes( $post_max_size ) ) {
			$result['description'] = sprintf(
				'<p>%s</p>',
				sprintf(
					/* translators: 1: post_max_size, 2: upload_max_filesize */
					__( 'The setting for %1$s is currently configured as 0, this could cause some problems when trying to upload files through plugin or theme features that rely on various upload methods. It is recommended to configure this setting to a fixed value, ideally matching the value of %2$s, as some upload methods read the value 0 as either unlimited, or disabled.' ),
					'<code>post_max_size</code>',
					'<code>upload_max_filesize</code>'
				)
			);
		} else {
			$result['description'] = sprintf(
				'<p>%s</p>',
				sprintf(
					/* translators: 1: post_max_size, 2: upload_max_filesize */
					__( 'The setting for %1$s is smaller than %2$s, this could cause some problems when trying to upload files.' ),
					'<code>post_max_size</code>',
					'<code>upload_max_filesize</code>'
				)
			);
		}

		return $result;
	}

	return $result;
}

Changelog

VersionDescription
5.5.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.