diff --git a/.htaccess b/.htaccess
index 83cb71a042..7d63a98c64 100644
--- a/.htaccess
+++ b/.htaccess
@@ -29,7 +29,6 @@ AddEncoding gzip svgz
 
 # PHP 5, Apache 1 and 2.
 <IfModule mod_php5.c>
-  php_value assert.active                   0
   php_flag session.auto_start               off
   php_value mbstring.http_input             pass
   php_value mbstring.http_output            pass
diff --git a/core/core.api.php b/core/core.api.php
index 3b0765104b..5045fc55fa 100644
--- a/core/core.api.php
+++ b/core/core.api.php
@@ -1221,10 +1221,6 @@
  * verified with standard control structures at all times, not just checked in
  * development environments with assert() statements on.
  *
- * When runtime assertions fail in PHP 7 an \AssertionError is thrown.
- * Drupal uses an assertion callback to do the same in PHP 5.x so that unit
- * tests involving runtime assertions will work uniformly across both versions.
- *
  * The Drupal project primarily uses runtime assertions to enforce the
  * expectations of the API by failing when incorrect calls are made by code
  * under development. While PHP type hinting does this for objects and arrays,
@@ -1232,21 +1228,12 @@
  * complex data structures such as cache and render arrays. They ensure that
  * methods' return values are the documented datatypes. They also verify that
  * objects have been properly configured and set up by the service container.
- * Runtime assertions are checked throughout development. They supplement unit
- * tests by checking scenarios that do not have unit tests written for them,
- * and by testing the API calls made by all the code in the system.
- *
- * When using assert() keep the following in mind:
- * - Runtime assertions are disabled by default in production and enabled in
- *   development, so they can't be used as control structures. Use exceptions
- *   for errors that can occur in production no matter how unlikely they are.
- * - Assert() functions in a buggy manner prior to PHP 7. If you do not use a
- *   string for the first argument of the statement but instead use a function
- *   call or expression then that code will be evaluated even when runtime
- *   assertions are turned off. To avoid this you must use a string as the
- *   first argument, and assert will pass this string to the eval() statement.
- * - Since runtime assertion strings are parsed by eval() use caution when
- *   using them to work with data that may be unsanitized.
+ * They supplement unit tests by checking scenarios that do not have unit tests
+ * written for them.
+ *
+ * There are two php settings which affect runtime assertions. The first,
+ * assert.exception, should always be set to 1. The second is zend.assertions.
+ * Set this to -1 in production and 1 in development.
  *
  * See https://www.drupal.org/node/2492225 for more information on runtime
  * assertions.
diff --git a/core/lib/Drupal/Component/Assertion/Handle.php b/core/lib/Drupal/Component/Assertion/Handle.php
index f1e1e6ace0..5020333f8b 100644
--- a/core/lib/Drupal/Component/Assertion/Handle.php
+++ b/core/lib/Drupal/Component/Assertion/Handle.php
@@ -5,10 +5,21 @@
 /**
  * Handler for runtime assertion failures.
  *
- * This class allows PHP 5.x to throw exceptions on runtime assertion fails
+ * This class allowed PHP 5.x to throw exceptions on runtime assertion fails
  * in the same manner as PHP 7, and sets the ASSERT_EXCEPTION flag to TRUE
  * for the PHP 7 runtime.
  *
+ * The PHP group has recommended that the assert_option() function be avoided
+ * entirely, so the function of this class becomes deprecated and it now simply
+ * returns doing nothing. Assertions should be controlled from the environment,
+ * not from the Drupal codebase.
+ *
+ * This class is called from the default settings.local.php file, a file highly
+ * likely to have been modified in local environments, so instead of removing it
+ * immediately it now returns doing nothing. This class will be removed when
+ * PHP 5 support is dropped entirely, currently scheduled for 8.6.
+ *
+ * @deprecated
  * @ingroup php_assert
  */
 class Handle {
@@ -17,25 +28,7 @@ class Handle {
    * Registers uniform assertion handling.
    */
   public static function register() {
-    // Since we're using exceptions, turn error warnings off.
-    assert_options(ASSERT_WARNING, FALSE);
-
-    if (version_compare(PHP_VERSION, '7.0.0-dev') < 0) {
-      if (!class_exists('AssertionError', FALSE)) {
-        require __DIR__ . '/global_namespace_php5.php';
-      }
-      // PHP 5 - create a handler to throw the exception directly.
-      assert_options(ASSERT_CALLBACK, function ($file = '', $line = 0, $code = '', $message = '') {
-        if (empty($message)) {
-          $message = $code;
-        }
-        throw new \AssertionError($message, 0, NULL, $file, $line);
-      });
-    }
-    else {
-      // PHP 7 - just turn exception throwing on.
-      assert_options(ASSERT_EXCEPTION, TRUE);
-    }
+    return;
   }
 
 }
diff --git a/core/lib/Drupal/Component/Assertion/global_namespace_php5.php b/core/lib/Drupal/Component/Assertion/global_namespace_php5.php
deleted file mode 100644
index 1b5caf46ea..0000000000
--- a/core/lib/Drupal/Component/Assertion/global_namespace_php5.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains PHP5 version of the \AssertionError class.
- */
-
-/**
- * Emulates PHP 7 AssertionError as closely as possible.
- *
- * This class is declared in the global namespace. It will only be included by
- * \Drupal\Component\Assertion\Handle for PHP5 since this class exists natively
- * in PHP 7. Note that in PHP 7 it extends from Error, not Exception, but that
- * isn't possible for PHP 5 - all exceptions must extend from exception.
- */
-class AssertionError extends Exception {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function __construct($message = '', $code = 0, Exception $previous = NULL, $file = '', $line = 0) {
-    parent::__construct($message, $code, $previous);
-    // Preserve the filename and line number of the assertion failure.
-    $this->file = $file;
-    $this->line = $line;
-  }
-
-}
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index 37ed0e97a6..4ffc69b25a 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -1002,12 +1002,6 @@ public static function bootEnvironment($app_root = NULL) {
         // Simpletest's internal browser.
         define('DRUPAL_TEST_IN_CHILD_SITE', TRUE);
 
-        // Web tests are to be conducted with runtime assertions active.
-        assert_options(ASSERT_ACTIVE, TRUE);
-        // Now synchronize PHP 5 and 7's handling of assertions as much as
-        // possible.
-        Handle::register();
-
         // Log fatal errors to the test site directory.
         ini_set('log_errors', 1);
         ini_set('error_log', $app_root . '/' . $test_db->getTestSitePath() . '/error.log');
diff --git a/core/modules/big_pipe/tests/src/Unit/Render/BigPipeResponseAttachmentsProcessorTest.php b/core/modules/big_pipe/tests/src/Unit/Render/BigPipeResponseAttachmentsProcessorTest.php
index ba69bfee60..ed1fc157ce 100644
--- a/core/modules/big_pipe/tests/src/Unit/Render/BigPipeResponseAttachmentsProcessorTest.php
+++ b/core/modules/big_pipe/tests/src/Unit/Render/BigPipeResponseAttachmentsProcessorTest.php
@@ -33,7 +33,7 @@ public function testNonHtmlResponse($response_class) {
     $big_pipe_response_attachments_processor = $this->createBigPipeResponseAttachmentsProcessor($this->prophesize(AttachmentsResponseProcessorInterface::class));
 
     $non_html_response = new $response_class();
-    $this->setExpectedException(\AssertionError::class);
+    $this->expectAssertion();
     $big_pipe_response_attachments_processor->processAttachments($non_html_response);
   }
 
diff --git a/core/modules/simpletest/src/TestBase.php b/core/modules/simpletest/src/TestBase.php
index 260d1a34af..5d41735e5b 100644
--- a/core/modules/simpletest/src/TestBase.php
+++ b/core/modules/simpletest/src/TestBase.php
@@ -2,7 +2,6 @@
 
 namespace Drupal\simpletest;
 
-use Drupal\Component\Assertion\Handle;
 use Drupal\Component\Render\MarkupInterface;
 use Drupal\Component\Utility\Crypt;
 use Drupal\Component\Utility\SafeMarkup;
@@ -904,10 +903,6 @@ public function run(array $methods = []) {
       $this->httpAuthCredentials = $username . ':' . $password;
     }
 
-    // Force assertion failures to be thrown as AssertionError for PHP 5 & 7
-    // compatibility.
-    Handle::register();
-
     set_error_handler([$this, 'errorHandler']);
     // Iterate through all the methods in this class, unless a specific list of
     // methods to run was passed.
@@ -1397,3 +1392,8 @@ public function getTempFilesDirectory() {
   }
 
 }
+
+// THIS LINE MUST BE REMOVED AFTER TEST RUNNERS ARE RECONFIGURED!!!
+if (defined('ASSERT_EXCEPTION')) {
+  assert_options(ASSERT_EXCEPTION, 1);
+}
diff --git a/core/modules/simpletest/src/Tests/SimpleTestTest.php b/core/modules/simpletest/src/Tests/SimpleTestTest.php
index 42759c255a..28965094ca 100644
--- a/core/modules/simpletest/src/Tests/SimpleTestTest.php
+++ b/core/modules/simpletest/src/Tests/SimpleTestTest.php
@@ -161,36 +161,16 @@ public function stubTest() {
     $site_path = $this->container->get('site.path');
     file_put_contents($key_file, $private_key);
 
-    // Check to see if runtime assertions are indeed on, if successful this
-    // will be the first of sixteen passes asserted in confirmStubResults()
-    try {
-      // Test with minimum possible arguments to make sure no notice for
-      // missing argument is thrown.
-      assert(FALSE);
-      $this->fail('Runtime assertions are not working.');
-    }
-    catch (\AssertionError $e) {
-      try {
-        // Now test with an error message to ensure it is correctly passed
-        // along by the rethrow.
-        assert(FALSE, 'Lorem Ipsum');
-      }
-      catch (\AssertionError $e) {
-        $this->assertEqual($e->getMessage(), 'Lorem Ipsum', 'Runtime assertions Enabled and running.');
-      }
-    }
-    // This causes the second of the sixteen passes asserted in
+    // This causes the first of the fifteen passes asserted in
     // confirmStubResults().
     $this->pass($this->passMessage);
 
     // The first three fails are caused by enabling a non-existent module in
-    // setUp().
-
-    // This causes the fourth of the five fails asserted in
+    // setUp(). This causes the fourth of the five fails asserted in
     // confirmStubResults().
     $this->fail($this->failMessage);
 
-    // This causes the third to fifth of the sixteen passes asserted in
+    // This causes the second to fourth of the fifteen passes asserted in
     // confirmStubResults().
     $user = $this->drupalCreateUser([$this->validPermission], 'SimpleTestTest');
 
@@ -198,15 +178,15 @@ public function stubTest() {
     $this->drupalCreateUser([$this->invalidPermission]);
 
     // Test logging in as a user.
-    // This causes the sixth to tenth of the sixteen passes asserted in
+    // This causes the fifth to ninth of the fifteen passes asserted in
     // confirmStubResults().
     $this->drupalLogin($user);
 
-    // This causes the eleventh of the sixteen passes asserted in
+    // This causes the tenth of the fifteen passes asserted in
     // confirmStubResults().
     $this->pass(t('Test ID is @id.', ['@id' => $this->testId]));
 
-    // These cause the twelfth to fifteenth of the sixteen passes asserted in
+    // These cause the eleventh to fourteenth of the fifteen passes asserted in
     // confirmStubResults().
     $this->assertTrue(file_exists($site_path . '/settings.testing.php'));
     // Check the settings.testing.php file got included.
@@ -221,7 +201,7 @@ public function stubTest() {
     // Generates a warning inside a PHP function.
     array_key_exists(NULL, NULL);
 
-    // This causes the sixteenth of the sixteen passes asserted in
+    // This causes the fifteenth of the fifteen passes asserted in
     // confirmStubResults().
     $this->assertNothing();
 
@@ -265,7 +245,7 @@ public function confirmStubTestResults() {
 
     $this->assertAssertion("Debug: 'Foo'", 'Debug', 'Fail', 'SimpleTestTest.php', 'Drupal\simpletest\Tests\SimpleTestTest->stubTest()');
 
-    $this->assertEqual('16 passes, 3 fails, 2 exceptions, 3 debug messages', $this->childTestResults['summary']);
+    $this->assertEqual('15 passes, 3 fails, 2 exceptions, 3 debug messages', $this->childTestResults['summary']);
 
     $this->testIds[] = $test_id = $this->getTestIdFromResults();
     $this->assertTrue($test_id, 'Found test ID in results.');
diff --git a/core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php b/core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php
index ce5b28c91c..419810bcc8 100644
--- a/core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php
+++ b/core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php
@@ -214,12 +214,14 @@ public function testSetGet() {
     $this->assertFalse($backend->get('test8'));
 
     // Calling ::set() with invalid cache tags. This should fail an assertion.
-    try {
-      $backend->set('assertion_test', 'value', Cache::PERMANENT, ['node' => [3, 5, 7]]);
-      $this->fail('::set() was called with invalid cache tags, runtime assertion did not fail.');
-    }
-    catch (\AssertionError $e) {
-      $this->pass('::set() was called with invalid cache tags, runtime assertion failed.');
+    if (ini_get('zend.assertions') > 0) {
+      try {
+        $backend->set('assertion_test', 'value', Cache::PERMANENT, ['node' => [3, 5, 7]]);
+        $this->fail('::set() was called with invalid cache tags, runtime assertion did not fail.');
+      }
+      catch (\AssertionError $e) {
+        $this->pass('::set() was called with invalid cache tags, runtime assertion failed.');
+      }
     }
   }
 
@@ -411,17 +413,22 @@ public function testSetMultiple() {
 
     // Calling ::setMultiple() with invalid cache tags. This should fail an
     // assertion.
-    try {
-      $items = [
-        'exception_test_1' => ['data' => 1, 'tags' => []],
-        'exception_test_2' => ['data' => 2, 'tags' => ['valid']],
-        'exception_test_3' => ['data' => 3, 'tags' => ['node' => [3, 5, 7]]],
-      ];
-      $backend->setMultiple($items);
-      $this->fail('::setMultiple() was called with invalid cache tags, runtime assertion did not fail.');
+    if (ini_get('zend.assertions') > 0) {
+      try {
+        $items = [
+          'exception_test_1' => ['data' => 1, 'tags' => []],
+          'exception_test_2' => ['data' => 2, 'tags' => ['valid']],
+          'exception_test_3' => ['data' => 3, 'tags' => ['node' => [3, 5, 7]]],
+        ];
+        $backend->setMultiple($items);
+        $this->fail('::setMultiple() was called with invalid cache tags, runtime assertion did not fail.');
+      }
+      catch (\AssertionError $e) {
+        $this->pass('::setMultiple() was called with invalid cache tags, runtime assertion failed.');
+      }
     }
-    catch (\AssertionError $e) {
-      $this->pass('::setMultiple() was called with invalid cache tags, runtime assertion failed.');
+    else {
+      $this->markTestSkipped('Runtime assertions disabled, skipping.');
     }
   }
 
diff --git a/core/tests/Drupal/Tests/AssertHelperTrait.php b/core/tests/Drupal/Tests/AssertHelperTrait.php
index ba814d9641..1ea613c390 100644
--- a/core/tests/Drupal/Tests/AssertHelperTrait.php
+++ b/core/tests/Drupal/Tests/AssertHelperTrait.php
@@ -32,4 +32,24 @@ protected static function castSafeStrings($value) {
     return $value;
   }
 
+  /**
+   * Expect an assertion to failure.
+   *
+   * @param string $message
+   *   Option failure message.
+   */
+  protected function expectAssertion($message = '') {
+    if (ini_get('zend.assertions') != 1) {
+      $this->markTestSkipped(
+        'Assertions are not enabled. Set zend.assertions to 1 to run this test.'
+      );
+    }
+    elseif (method_exists($this, 'expectException')) {
+      $this->expectException(\AssertionError::class, $message);
+    }
+    else {
+      $this->setExpectedException(\AssertionError::class, $message);
+    }
+  }
+
 }
diff --git a/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php b/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php
index a8a8af0e6c..3605ab5333 100644
--- a/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php
@@ -343,13 +343,18 @@ public function testTransformRootRelativeUrlsToAbsolute($html, $scheme_and_host,
    * @dataProvider providerTestTransformRootRelativeUrlsToAbsoluteAssertion
    */
   public function testTransformRootRelativeUrlsToAbsoluteAssertion($scheme_and_host) {
-    if (method_exists($this, 'expectException')) {
-      $this->expectException(\AssertionError::class);
+    if (ini_get('zend.assertions') > 0) {
+      if (method_exists($this, 'expectException')) {
+        $this->expectException(\AssertionError::class);
+      }
+      else {
+        $this->setExpectedException(\AssertionError::class);
+      }
+      Html::transformRootRelativeUrlsToAbsolute('', $scheme_and_host);
     }
     else {
-      $this->setExpectedException(\AssertionError::class);
+      $this->markTestSkipped('Runtime assertions disabled, skipping.');
     }
-    Html::transformRootRelativeUrlsToAbsolute('', $scheme_and_host);
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php
index cbb06668c0..1761ae14bf 100644
--- a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php
@@ -528,7 +528,7 @@ public function testCssAssert($extension, $exception_message) {
     $path = substr($path, strlen($this->root) + 1);
     $this->libraryDiscoveryParser->setPaths('module', $extension, $path);
 
-    $this->setExpectedException(\AssertionError::class, $exception_message);
+    $this->expectAssertion($exception_message);
     $this->libraryDiscoveryParser->buildByExtension($extension);
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Cache/CacheTagsInvalidatorTest.php b/core/tests/Drupal/Tests/Core/Cache/CacheTagsInvalidatorTest.php
index 5466a098ab..2246fb9296 100644
--- a/core/tests/Drupal/Tests/Core/Cache/CacheTagsInvalidatorTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/CacheTagsInvalidatorTest.php
@@ -17,7 +17,7 @@ class CacheTagsInvalidatorTest extends UnitTestCase {
    */
   public function testInvalidateTagsWithInvalidTags() {
     $cache_tags_invalidator = new CacheTagsInvalidator();
-    $this->setExpectedException(\AssertionError::class);
+    $this->expectAssertion();
     $cache_tags_invalidator->invalidateTags(['node' => [2, 3, 5, 8, 13]]);
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Cache/Context/CacheContextsManagerTest.php b/core/tests/Drupal/Tests/Core/Cache/Context/CacheContextsManagerTest.php
index f89e639cc7..cd5cc0cc3d 100644
--- a/core/tests/Drupal/Tests/Core/Cache/Context/CacheContextsManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/Context/CacheContextsManagerTest.php
@@ -110,7 +110,7 @@ public function testInvalidContext() {
     $container = $this->getMockContainer();
     $cache_contexts_manager = new CacheContextsManager($container, $this->getContextsFixture());
 
-    $this->setExpectedException(\AssertionError::class);
+    $this->expectAssertion();
     $cache_contexts_manager->convertTokensToKeys(["non-cache-context"]);
   }
 
diff --git a/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerBuilderTest.php b/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerBuilderTest.php
index 08465d6381..967e892775 100644
--- a/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerBuilderTest.php
+++ b/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerBuilderTest.php
@@ -85,7 +85,7 @@ public function testSetAlias() {
    */
   public function testSerialize() {
     $container = new ContainerBuilder();
-    $this->setExpectedException(\AssertionError::class);
+    $this->expectAssertion();
     serialize($container);
   }
 
diff --git a/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerTest.php b/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerTest.php
index 46f00bd2a5..02c3149edf 100644
--- a/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerTest.php
+++ b/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerTest.php
@@ -17,7 +17,7 @@ class ContainerTest extends UnitTestCase {
    */
   public function testSerialize() {
     $container = new Container();
-    $this->setExpectedException(\AssertionError::class);
+    $this->expectAssertion();
     serialize($container);
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Render/Placeholder/ChainedPlaceholderStrategyTest.php b/core/tests/Drupal/Tests/Core/Render/Placeholder/ChainedPlaceholderStrategyTest.php
index 776b79446d..7234c73896 100644
--- a/core/tests/Drupal/Tests/Core/Render/Placeholder/ChainedPlaceholderStrategyTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/Placeholder/ChainedPlaceholderStrategyTest.php
@@ -128,7 +128,7 @@ public function testProcessPlaceholdersNoStrategies() {
     ];
 
     $chained_placeholder_strategy = new ChainedPlaceholderStrategy();
-    $this->setExpectedException(\AssertionError::class, 'At least one placeholder strategy must be present; by default the fallback strategy \Drupal\Core\Render\Placeholder\SingleFlushStrategy is always present.');
+    $this->expectAssertion('At least one placeholder strategy must be present; by default the fallback strategy \Drupal\Core\Render\Placeholder\SingleFlushStrategy is always present.');
     $chained_placeholder_strategy->processPlaceholders($placeholders);
   }
 
@@ -152,7 +152,7 @@ public function testProcessPlaceholdersWithRoguePlaceholderStrategy() {
 
     $chained_placeholder_strategy = new ChainedPlaceholderStrategy();
     $chained_placeholder_strategy->addPlaceholderStrategy($rogue_strategy);
-    $this->setExpectedException(\AssertionError::class, 'Processed placeholders must be a subset of all placeholders.');
+    $this->expectAssertion('Processed placeholders must be a subset of all placeholders.');
     $chained_placeholder_strategy->processPlaceholders($placeholders);
   }
 
diff --git a/core/tests/Drupal/Tests/UnitTestCase.php b/core/tests/Drupal/Tests/UnitTestCase.php
index bd183c7961..248a9ed626 100644
--- a/core/tests/Drupal/Tests/UnitTestCase.php
+++ b/core/tests/Drupal/Tests/UnitTestCase.php
@@ -19,6 +19,7 @@
 abstract class UnitTestCase extends TestCase {
 
   use PhpunitCompatibilityTrait;
+  use AssertHelperTrait;
 
   /**
    * The random generator.
diff --git a/core/tests/bootstrap.php b/core/tests/bootstrap.php
index 50fef61ee6..a92cb65ee0 100644
--- a/core/tests/bootstrap.php
+++ b/core/tests/bootstrap.php
@@ -7,7 +7,6 @@
  * @see phpunit.xml.dist
  */
 
-use Drupal\Component\Assertion\Handle;
 use PHPUnit\Runner\Version;
 
 /**
@@ -162,11 +161,10 @@ function drupal_phpunit_populate_class_loader() {
 // reduce the fragility of the testing system in general.
 date_default_timezone_set('Australia/Sydney');
 
-// Runtime assertions. PHPUnit follows the php.ini assert.active setting for
-// runtime assertions. By default this setting is on. Here we make a call to
-// make PHP 5 and 7 handle assertion failures the same way, but this call does
-// not turn runtime assertions on if they weren't on already.
-Handle::register();
+// THIS LINE MUST BE REMOVED AFTER TEST RUNNERS ARE RECONFIGURED!!!
+if (defined('ASSERT_EXCEPTION')) {
+  assert_options(ASSERT_EXCEPTION, 1);
+}
 
 // PHPUnit 4 to PHPUnit 6 bridge. Tests written for PHPUnit 4 need to work on
 // PHPUnit 6 with a minimum of fuss.
diff --git a/sites/example.settings.local.php b/sites/example.settings.local.php
index 330be144c5..4fc893b090 100644
--- a/sites/example.settings.local.php
+++ b/sites/example.settings.local.php
@@ -14,26 +14,13 @@
  * If you are using a site name in the path, such as 'sites/example.com', copy
  * this file to 'sites/example.com/settings.local.php', and uncomment the lines
  * at the bottom of 'sites/example.com/settings.php'.
- */
-
-/**
- * Assertions.
  *
- * The Drupal project primarily uses runtime assertions to enforce the
- * expectations of the API by failing when incorrect calls are made by code
- * under development.
+ * You are strongly encouraged to enable assertions in your development
+ * environment.
  *
  * @see http://php.net/assert
  * @see https://www.drupal.org/node/2492225
- *
- * If you are using PHP 7.0 it is strongly recommended that you set
- * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess
- * or runtime) on development machines and to 0 in production.
- *
- * @see https://wiki.php.net/rfc/expectations
  */
-assert_options(ASSERT_ACTIVE, TRUE);
-\Drupal\Component\Assertion\Handle::register();
 
 /**
  * Enable local development services.
