diff --git a/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-import.php b/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-import.php
index 3a1785c472..81b3291f56 100644
--- a/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-import.php
+++ b/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-import.php
@@ -661,6 +661,11 @@ protected function rebuild_affected_zips( $plugin_slug, $stable_tag, $current_st
$stable_tag
);
} catch ( Exception $e ) {
+ $this->warnings['zip_build_failed'] = $e->getMessage();
+
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Routed to the error log via E_USER_WARNING; raw is fine.
+ trigger_error( sprintf( '%s: ZIP build failed for %s: %s', $plugin_slug, implode( ', ', array_unique( $versions_to_build ) ), $e->getMessage() ), E_USER_WARNING );
+
return false;
}
diff --git a/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-builder.php b/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-builder.php
index 89ec3724b0..2eb663df32 100644
--- a/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-builder.php
+++ b/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-builder.php
@@ -128,6 +128,9 @@ public function build( $slug, $versions, $context = '', $stable_tag = '' ) {
} catch ( Exception $e ) {
// In event of error, skip this file this time.
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Routed to the error log via E_USER_WARNING; raw is fine.
+ trigger_error( sprintf( 'ZIP build failed for %s %s: %s', $this->slug, $version, $e->getMessage() ), E_USER_WARNING );
+
$this->cleanup_plugin_tmp();
// Perform an SVN up to revert any changes made.