diff --git src/wp-admin/includes/class-wp-plugins-list-table.php src/wp-admin/includes/class-wp-plugins-list-table.php
index 6e130f94b4..c464a30158 100644
--- src/wp-admin/includes/class-wp-plugins-list-table.php
+++ src/wp-admin/includes/class-wp-plugins-list-table.php
@@ -900,4 +900,118 @@ class WP_Plugins_List_Table extends WP_List_Table {
 	protected function get_primary_column_name() {
 		return 'name';
 	}
+
+	/**
+	 * Load hooks to prevent plugin updates if PHP version requirement not met.
+	 */
+	public function load_requires_php() {
+		add_filter( 'plugin_row_meta', array( $this, 'plugin_update_nag' ), 10, 2 );
+	}
+
+	/**
+	 * Adds small PHP upgrade nag to plugin row.
+	 *
+	 * @param array  $links
+	 * @param string $file
+	 *
+	 * @return array $links
+	 */
+	public function plugin_update_nag( $links, $file ) {
+		$slug = dirname( $file );
+		if ( $this->is_required_php( $slug ) ) {
+			$links[] = '<span style="color:#f00;">' . __( 'Upgrade PHP for available plugin update.' ) . '</span>';
+			add_action( "after_plugin_row_{$file}", array( $this, 'remove_plugin_update_row' ), 10, 2 );
+		}
+
+		return $links;
+	}
+
+	/**
+	 * Write out inline style to hide the update row notice.
+	 *
+	 * @param string $plugin_file Unused.
+	 * @param array  $plugin_data Plugin data.
+	 */
+	public function remove_plugin_update_row( $plugin_file, $plugin_data ) {
+		print( '<script>' );
+		print( 'jQuery(".update[data-plugin=\'' . $plugin_file . '\']").removeClass("update");' );
+		print( 'jQuery("tr#' . $plugin_data['slug'] . '-update").remove();' );
+		print( '</script>' );
+	}
+
+	/**
+	 * Unset update_plugins from update-core.php as appropriate.
+	 *
+	 * @param array $plugins Plugins for updating.
+	 *
+	 * @return array $plugins Plugins for updating.
+	 */
+	public function unset_plugin_updates( $plugins ) {
+		if ( ! empty( $plugins ) ) {
+			foreach ( $plugins as $file => $class ) {
+				if ( $this->is_required_php( $class->update->slug ) ) {
+					unset( $plugins[ $file ] );
+					$this->requires_php_update_notice();
+				}
+			}
+		}
+
+		return $plugins;
+	}
+
+	/**
+	 * Create requires PHP update notice.
+	 */
+	public function requires_php_update_notice() {
+		$message = '<span style="color:#f00;" class="dashicons dashicons-warning"></span>&nbsp;';
+		$message .= __( 'Some updates are not shown in this list because they require a newer version of PHP.' );
+		print( '<div class="notice-error notice"><p>' . $message . '</p></div>' );
+	}
+
+	/**
+	 * Test for required PHP version.
+	 *
+	 * @param string $slug Slug of the repository being tested.
+	 *
+	 * @return bool True for below required PHP version.
+	 *              False for above required PHP version or none set.
+	 */
+	protected function is_required_php( $slug ) {
+		$response = $this->get_plugin_dot_org_api_data( $slug );
+
+		if ( ! $response->requires_php ) {
+			return false;
+		}
+
+		return version_compare( PHP_VERSION, $response->requires_php, '<=' );
+	}
+
+	/**
+	 * Get the dot org API data for the plugin or theme slug.
+	 *
+	 * @param string $slug Plugin or theme slug.
+	 *
+	 * @return object|bool $response
+	 */
+	protected function get_plugin_dot_org_api_data( $slug ) {
+		$response = get_site_transient( 'php_check-' . $slug );
+		if ( ! $response ) {
+			$url      = 'https://api.wordpress.org/plugins/info/1.2/';
+			$url      = add_query_arg( array(
+				'action'        => 'plugin_information',
+				'request[slug]' => $slug,
+			), $url );
+			$response = wp_remote_get( $url );
+			$response = null !== $response['body'] ? json_decode( $response['body'] ) : false;
+
+			// Plugins not in dot org.
+			if ( ! isset( $response->requires_php ) ) {
+				$response->requires_php = false;
+			}
+			set_site_transient( 'php_check-' . $slug, $response );
+		}
+
+		return $response;
+	}
+
 }
diff --git src/wp-admin/plugins.php src/wp-admin/plugins.php
index b482f474c0..f690254b22 100644
--- src/wp-admin/plugins.php
+++ src/wp-admin/plugins.php
@@ -405,6 +405,7 @@ if ( $action ) {
 }
 
 $wp_list_table->prepare_items();
+$wp_list_table->load_requires_php();
 
 wp_enqueue_script( 'plugin-install' );
 add_thickbox();
diff --git src/wp-admin/update-core.php src/wp-admin/update-core.php
index 61527bfc82..634faa1653 100644
--- src/wp-admin/update-core.php
+++ src/wp-admin/update-core.php
@@ -232,6 +232,10 @@ function list_plugin_updates() {
 
 	require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
 	$plugins = get_plugin_updates();
+
+	$wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
+	$plugins = $wp_list_table->unset_plugin_updates( $plugins );
+
 	if ( empty( $plugins ) ) {
 		echo '<h2>' . __( 'Plugins' ) . '</h2>';
 		echo '<p>' . __( 'Your plugins are all up to date.' ) . '</p>';
