diff --git a/EXTENSIONS b/EXTENSIONS index 1b745557bf5c8..8526ab3119cd7 100644 --- a/EXTENSIONS +++ b/EXTENSIONS @@ -63,6 +63,11 @@ PRIMARY MAINTAINER: Joe Watkins , Bob Weinand MAINTENANCE: Unknown STATUS: 5.6 ------------------------------------------------------------------------------- +EXTENSION: frankenPHP +PRIMARY MAINTAINER: Kévin Dunglas +MAINTENANCE: Maintained +STATUS: 8.2 +------------------------------------------------------------------------------- == Database extensions == diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 3e19c0cfa8ee9..d84ea79192a36 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1463,7 +1463,7 @@ static void zend_set_timeout_ex(zend_long seconds, bool reset_signals) /* {{{ */ t_r.it_value.tv_sec = seconds; t_r.it_value.tv_usec = t_r.it_interval.tv_sec = t_r.it_interval.tv_usec = 0; -# if defined(__CYGWIN__) || defined(__PASE__) +# if defined(__CYGWIN__) || defined(__PASE__) || defined(NO_SIGPROF) setitimer(ITIMER_REAL, &t_r, NULL); } signo = SIGALRM; diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c index 68bc3de3ff252..fef8c199b2ff2 100644 --- a/Zend/zend_signal.c +++ b/Zend/zend_signal.c @@ -64,7 +64,7 @@ ZEND_API zend_signal_globals_t zend_signal_globals; static void zend_signal_handler(int signo, siginfo_t *siginfo, void *context); static int zend_signal_register(int signo, void (*handler)(int, siginfo_t*, void*)); -#if defined(__CYGWIN__) || defined(__PASE__) +#if defined(__CYGWIN__) || defined(__PASE__) || defined(NO_SIGPROF) /* Matches zend_execute_API.c; these platforms don't support ITIMER_PROF. */ #define TIMEOUT_SIG SIGALRM #else @@ -248,7 +248,7 @@ ZEND_API void zend_sigaction(int signo, const struct sigaction *act, struct siga if (SIGG(handlers)[signo-1].handler == (void *) SIG_IGN) { sa.sa_sigaction = (void *) SIG_IGN; } else { - sa.sa_flags = SA_SIGINFO | (act->sa_flags & SA_FLAGS_MASK); + sa.sa_flags = SA_ONSTACK | SA_SIGINFO | (act->sa_flags & SA_FLAGS_MASK); sa.sa_sigaction = zend_signal_handler_defer; sa.sa_mask = global_sigmask; } diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 0c956fe846935..f78ae8755f336 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -2824,6 +2824,7 @@ static inline int accel_find_sapi(void) "litespeed", "uwsgi", "fuzzer", + "frankenphp", NULL }; const char **sapi_name; @@ -3156,7 +3157,7 @@ static int accel_startup(zend_extension *extension) strcmp(sapi_module.name, "cli") == 0) { zps_startup_failure("Opcode Caching is disabled for CLI", NULL, accelerator_remove_cb); } else { - zps_startup_failure("Opcode Caching is only supported in Apache, FPM, FastCGI and LiteSpeed SAPIs", NULL, accelerator_remove_cb); + zps_startup_failure("Opcode Caching is only supported in Apache, FPM, FastCGI, FrankenPHP, LiteSpeed and uWSGI SAPIs", NULL, accelerator_remove_cb); } return SUCCESS; } diff --git a/ext/standard/credits_sapi.h b/ext/standard/credits_sapi.h index d6553ea04c1e9..e35d36f0e1b9e 100644 --- a/ext/standard/credits_sapi.h +++ b/ext/standard/credits_sapi.h @@ -17,3 +17,4 @@ CREDIT_LINE("Embed", "Edin Kadribasic"); CREDIT_LINE("FastCGI Process Manager", "Andrei Nigmatulin, dreamcat4, Antony Dovgal, Jerome Loyet"); CREDIT_LINE("litespeed", "George Wang"); CREDIT_LINE("phpdbg", "Felipe Pena, Joe Watkins, Bob Weinand"); +CREDIT_LINE("FrankenPHP", "Kévin Dunglas"); diff --git a/sapi/frankenphp/CREDITS b/sapi/frankenphp/CREDITS new file mode 100644 index 0000000000000..a5226fe2bc606 --- /dev/null +++ b/sapi/frankenphp/CREDITS @@ -0,0 +1,2 @@ +FrankenPHP +Kévin Dunglas