--- ext-src/php_swoole.cc.orig +++ ext-src/php_swoole.cc @@ -161,10 +161,24 @@ static void php_swoole_init_globals(zen void php_swoole_register_shutdown_function(const char *function) { php_shutdown_function_entry shutdown_function_entry; zval function_name; ZVAL_STRING(&function_name, function); +#if PHP_VERSION_ID >= 80500 + // PHP 8.5: shutdown function structure changed - removed fci field + shutdown_function_entry.params = NULL; + shutdown_function_entry.param_count = 0; + + if (zend_fcall_info_init(&function_name, 0, NULL, + &shutdown_function_entry.fci_cache, NULL, NULL) != SUCCESS) { + zval_ptr_dtor(&function_name); + return; + } + + register_user_shutdown_function(Z_STRVAL(function_name), Z_STRLEN(function_name), &shutdown_function_entry); + zval_ptr_dtor(&function_name); +#else zend_fcall_info_init( &function_name, 0, &shutdown_function_entry.fci, &shutdown_function_entry.fci_cache, NULL, NULL); register_user_shutdown_function(Z_STRVAL(function_name), Z_STRLEN(function_name), &shutdown_function_entry); +#endif } void php_swoole_set_global_option(HashTable *vht) { zval *ztmp;