int php_request_startup(TSRMLS_D)
{
/* ... */
   zend_try {
      PG(in_error_log) = 0;
      PG(during_request_startup) = 1;
      php_output_activate(TSRMLS_C);

      /* initialize global variables */
      PG(modules_activated) = 0;
      PG(header_is_being_sent) = 0;
      PG(connection_status) = PHP_CONNECTION_NORMAL;
      PG(in_user_include) = 0;

      zend_activate(TSRMLS_C);
      sapi_activate(TSRMLS_C);

      if (PG(max_input_time) == -1) {
         zend_set_timeout(EG(timeout_seconds), 1);
      } else {
         zend_set_timeout(PG(max_input_time), 1);
      }

      /* ... */

      if (PG(output_handler) && PG(output_handler)[0]) {
         php_start_ob_buffer_named(
            PG(output_handler),
            0,
            1 TSRMLS_CC
         );
      } else if (PG(output_buffering)) {
         if (PG(output_buffering)>1) {
            php_start_ob_buffer(
               NULL,
               PG(output_buffering),
               1 TSRMLS_CC
            );
         } else {
            php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC);
         }
      } else if (PG(implicit_flush)) {
         php_start_implicit_flush(TSRMLS_C);
      }

      php_hash_environment(TSRMLS_C);
      zend_activate_modules(TSRMLS_C);
      PG(modules_activated)=1;
   } zend_catch {
      retval = FAILURE;
   } zend_end_try();

   SG(sapi_started) = 1;
   return retval;
}