[PECL-CVS] [pecl-authentication-krb5] master: Merge branch 'feature/minimum-php70' of github.com:tvdijen/pecl-authentication-krb5

[email protected] (Moritz Bechler) Mon, 8 Jun 2026 15:49:54 +0000
Newsgroups php.pecl.cvs
Message-ID <IHtGrAt6rCRiGaXYQe9lVXO7lGgg5CkhfCcBfSBWRno@main.internal.php.net>
Author: Moritz Bechler (mbechler)
Date: 2026-06-08T16:23:47+02:00

Commit: https://github.com/php/pecl-authentication-krb5/commit/bb1b171f1552381c6c9ab291a856b7bc3704403e
Raw diff: https://github.com/php/pecl-authentication-krb5/commit/bb1b171f1552381c6c9ab291a856b7bc3704403e.diff

Merge branch 'feature/minimum-php70' of github.com:tvdijen/pecl-authentication-krb5

Changed paths:
  M  channel.c
  M  gssapi.c
  M  kadm.c
  M  kadm5_policy.c
  M  kadm5_principal.c
  M  kadm5_tldata.c
  M  krb5.c
  M  negotiate_auth.c
  M  php_krb5.h
  M  php_krb5_compat.h
  M  php_krb5_gssapi.h
  M  php_krb5_kadm.h


Diff:

diff --git a/channel.c b/channel.c
index b447851..7b7b11c 100644
--- a/channel.c
+++ b/channel.c
@@ -1,16 +1,16 @@
 /**
 * Copyright (c) 2023 Moritz Bechler
-* 
+*
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
-* 
+*
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
-* 
+*
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -120,7 +120,7 @@ PHP_METHOD(GSSAPIChannelBinding, getInitiatorAddress)
 		RETURN_NULL();
 	}
 	KRB5_SET_ERROR_HANDLING(EH_NORMAL);
-	krb5_gss_channel_object *object = KRB5_THIS_GSS_CHANNEL;	
+	krb5_gss_channel_object *object = KRB5_THIS_GSS_CHANNEL;
 	if ( object->data.initiator_address.value ) {
 		_RETVAL_STRINGL((char*)object->data.initiator_address.value, object->data.initiator_address.length);
 	} else {
@@ -139,7 +139,7 @@ PHP_METHOD(GSSAPIChannelBinding, getInitiatorAddressType)
 	}
 	KRB5_SET_ERROR_HANDLING(EH_NORMAL);
 	krb5_gss_channel_object *object = KRB5_THIS_GSS_CHANNEL;
-	
+
 	RETURN_LONG(object->data.initiator_addrtype);
 }
 /* }}} */
@@ -172,7 +172,7 @@ PHP_METHOD(GSSAPIChannelBinding, getAcceptorAddressType)
 	}
 	KRB5_SET_ERROR_HANDLING(EH_NORMAL);
 	krb5_gss_channel_object *object = KRB5_THIS_GSS_CHANNEL;
-	
+
 	RETURN_LONG(object->data.acceptor_addrtype);
 }
 /* }}} */
@@ -192,7 +192,7 @@ PHP_METHOD(GSSAPIChannelBinding, getApplicationData)
 		_RETVAL_STRINGL((char*)object->data.application_data.value, object->data.application_data.length);
 	} else {
 		RETURN_NULL();
-	}	
+	}
 }
 /* }}} */
 
@@ -208,7 +208,7 @@ PHP_METHOD(GSSAPIChannelBinding, setApplicationData)
 	}
 	KRB5_SET_ERROR_HANDLING(EH_NORMAL);
 	krb5_gss_channel_object *object = KRB5_THIS_GSS_CHANNEL;
-	if ( !zdata ) { 
+	if ( !zdata ) {
 		object->data.application_data.length = 0;
 		if ( object->data.application_data.value ) {
 			efree(object->data.application_data.value);
@@ -242,7 +242,7 @@ PHP_METHOD(GSSAPIChannelBinding, setInitiatorAddress)
 	krb5_gss_channel_object *object = KRB5_THIS_GSS_CHANNEL;
 
 	object->data.initiator_addrtype = type;
-	if ( !zdata ) { 
+	if ( !zdata ) {
 		object->data.initiator_address.length = 0;
 		if ( object->data.initiator_address.value ) {
 			efree(object->data.initiator_address.value);
@@ -274,9 +274,9 @@ PHP_METHOD(GSSAPIChannelBinding, setAcceptorAddress)
 	}
 	KRB5_SET_ERROR_HANDLING(EH_NORMAL);
 	krb5_gss_channel_object *object = KRB5_THIS_GSS_CHANNEL;
-	
+
 	object->data.acceptor_addrtype = type;
-	if ( !zdata ) { 
+	if ( !zdata ) {
 		object->data.acceptor_address.length = 0;
 		if ( object->data.acceptor_address.value ) {
 			efree(object->data.acceptor_address.value);
@@ -294,5 +294,3 @@ PHP_METHOD(GSSAPIChannelBinding, setAcceptorAddress)
 	}
 }
 /* }}} */
-
-
diff --git a/gssapi.c b/gssapi.c
index 28dc189..627dfd1 100644
--- a/gssapi.c
+++ b/gssapi.c
@@ -29,14 +29,9 @@
 zend_class_entry *krb5_ce_gssapi_context;
 
 typedef struct _krb5_gssapi_context_object {
-#if PHP_MAJOR_VERSION < 7
-		zend_object std;
-#endif
 		gss_cred_id_t creds;
 		gss_ctx_id_t context;
-#if PHP_MAJOR_VERSION >= 7
 		zend_object std;
-#endif
 } krb5_gssapi_context_object;
 
 ZEND_BEGIN_ARG_INFO_EX(krb5_GSSAPIContext_registerAcceptorIdentity, 0, 0, 1)
@@ -174,29 +169,10 @@ void php_krb5_gssapi_handle_error(OM_uint32 major, OM_uint32 minor TSRMLS_DC)
 /* Setup functions */
 
 /* {{{ */
-#if PHP_MAJOR_VERSION < 7
-void php_krb5_gssapi_context_object_dtor(void *obj, zend_object_handle handle TSRMLS_DC)
-{
-	OM_uint32 minor_status = 0;
-	krb5_gssapi_context_object *object = (krb5_gssapi_context_object*)obj;
-	OBJECT_STD_DTOR(object->std);
-
-
-	if(object->creds != GSS_C_NO_CREDENTIAL) {
-		gss_release_cred(&minor_status, &object->creds);
-	}
-
-	if(object->context != GSS_C_NO_CONTEXT) {
-		gss_delete_sec_context(&minor_status, &object->context,  GSS_C_NO_BUFFER);
-	}
-
-	efree(object);
-}
-#else
 void php_krb5_gssapi_context_object_free(zend_object *obj TSRMLS_DC) {
 	OM_uint32 minor_status = 0;
 	krb5_gssapi_context_object *object = (krb5_gssapi_context_object*)((char *)obj - XtOffsetOf(krb5_gssapi_context_object, std));
-	
+
 	if(object->creds != GSS_C_NO_CREDENTIAL) {
 		gss_release_cred(&minor_status, &object->creds);
 	}
@@ -206,38 +182,10 @@ void php_krb5_gssapi_context_object_free(zend_object *obj TSRMLS_DC) {
 	}
 	zend_object_std_dtor(obj);
 }
-#endif
 /* }}} */
 
 
 /* {{{ */
-#if PHP_MAJOR_VERSION < 7
-zend_object_value php_krb5_gssapi_context_object_new(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	krb5_gssapi_context_object *object;
-
-	object = emalloc(sizeof(krb5_gssapi_context_object));
-
-	object->context = GSS_C_NO_CONTEXT;
-	object->creds = GSS_C_NO_CREDENTIAL;
-
-	INIT_STD_OBJECT(object->std, ce);
-
-#if PHP_VERSION_ID < 50399
-	zend_hash_copy(object->std.properties, &ce->default_properties,
-	        		(copy_ctor_func_t) zval_add_ref, NULL,
-					sizeof(zval*));
-#else
-	object_properties_init(&(object->std), ce);
-#endif
-
-	retval.handle = zend_objects_store_put(object, php_krb5_gssapi_context_object_dtor, NULL, NULL TSRMLS_CC);
-
-	retval.handlers = &krb5_gssapi_context_handlers;
-	return retval;
-}
-#else
 zend_object *php_krb5_gssapi_context_object_new(zend_class_entry *ce TSRMLS_DC) {
 	krb5_gssapi_context_object *object;
 	object = ecalloc(1, sizeof(krb5_gssapi_context_object) + zend_object_properties_size(ce));
@@ -250,7 +198,6 @@ zend_object *php_krb5_gssapi_context_object_new(zend_class_entry *ce TSRMLS_DC)
 	object->std.handlers = &krb5_gssapi_context_handlers;
 	return &object->std;
 }
-#endif
 /* }}} */
 
 /* {{{ */
@@ -275,10 +222,8 @@ int php_krb5_gssapi_register_classes(TSRMLS_D)
 	krb5_ce_gssapi_context->create_object = php_krb5_gssapi_context_object_new;
 
 	memcpy(&krb5_gssapi_context_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
-#if PHP_MAJOR_VERSION >= 7
 	krb5_gssapi_context_handlers.offset = XtOffsetOf(krb5_gssapi_context_object, std);
 	krb5_gssapi_context_handlers.free_obj = php_krb5_gssapi_context_object_free;
-#endif
 
 	php_krb5_register_gss_channel();
 	return SUCCESS;
@@ -381,16 +326,16 @@ PHP_METHOD(GSSAPIContext, acquireCredentials)
 	zval* zccache;
 	krb5_ccache_object *ccache = NULL;
 	char *ccname = NULL;
-	
+
 	zend_long type = GSS_C_BOTH;
-	
+
 	char *pname = NULL;
 	gss_buffer_desc nametmp;
 	gss_name_t name = GSS_C_NO_NAME;
 	strsize_t namelen = 0;
-	
+
 	memset(&nametmp, 0, sizeof(nametmp));
-	
+
 
 	krb5_gssapi_context_object *context = KRB5_THIS_GSSAPI_CONTEXT;
 
@@ -406,7 +351,7 @@ PHP_METHOD(GSSAPIContext, acquireCredentials)
 	ccache = KRB5_CCACHE(zccache);
 
 	if ( ccache->keytab == NULL ) {
-		type = GSS_C_INITIATE;	
+		type = GSS_C_INITIATE;
 	}
 
 	char *oldkrb5ccname = NULL, *oldkrb5ktname = NULL;
@@ -432,8 +377,8 @@ PHP_METHOD(GSSAPIContext, acquireCredentials)
 		krb5_free_principal(ccache->ctx, ccprinc);
 	}
 
-	
-	if(nametmp.length != 0) { 
+
+	if(nametmp.length != 0) {
 		status = gss_import_name(&minor_status, &nametmp, GSS_C_NO_OID, &name);
 
 		if(GSS_ERROR(status)) {
@@ -493,7 +438,7 @@ PHP_METHOD(GSSAPIContext, inquireCredentials)
 
 	ASSERT_GSS_SUCCESS(status,minor_status,);
 
-	
+
 	status = gss_display_name(&minor_status, name, &nametmp, NULL);
 	ASSERT_GSS_SUCCESS(status,minor_status,);
 
@@ -571,12 +516,7 @@ PHP_METHOD(GSSAPIContext, initSecContext)
 	zval *ztime_rec = NULL;
 	zval *zchannel = NULL;
 
-#if PHP_MAJOR_VERSION >= 7
 	const char *args = "s|sllz/z/z/O";
-#else
-	
-	const char *args = "s|sllzzzO";
-#endif
 
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, args,
 								&(target.value), &target_len,
@@ -591,7 +531,7 @@ PHP_METHOD(GSSAPIContext, initSecContext)
 	}
 	target.length = target_len;
 	inputtoken.length = inputtoken_len;
-	
+
 	if (zchannel != NULL) {
 		krb5_gss_channel_object *zchannelobj = KRB5_GSS_CHANNEL(zchannel);
 		if ( zchannelobj != NULL ) {
@@ -681,12 +621,7 @@ PHP_METHOD(GSSAPIContext, acceptSecContext)
 	zval* zdeleg_creds = NULL;
 	zval *zchannel = NULL;
 
-#if PHP_MAJOR_VERSION >= 7
 	const char *args = "s|z/z/z/z/OO";
-#else
-	
-	const char *args = "s|zzzzOO";
-#endif
 
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, args,
 			&(inputtoken.value), &inputtoken_len,
@@ -700,7 +635,7 @@ PHP_METHOD(GSSAPIContext, acceptSecContext)
 	}
 
 	inputtoken.length = inputtoken_len;
-	
+
 	if (zchannel != NULL) {
 		krb5_gss_channel_object *zchannelobj = KRB5_GSS_CHANNEL(zchannel);
 		if ( zchannelobj != NULL ) {
@@ -765,22 +700,22 @@ PHP_METHOD(GSSAPIContext, acceptSecContext)
 		 krb5_ccache_object *deleg_ccache = KRB5_CCACHE(zdeleg_creds);
 		 krb5_error_code retval = 0;
 		 krb5_principal princ;
-		 
+
 		 if(!deleg_ccache) {
 			 zend_throw_exception(NULL, "Invalid KRB5CCache object given", 0 TSRMLS_CC);
 			 RETURN_FALSE;
 		 }
-		 
+
 		 /* use principal name for ccache initialization */
 		 gss_buffer_desc nametmp;
 		 status = gss_display_name(&minor_status, src_name, &nametmp, NULL);
 		 ASSERT_GSS_SUCCESS(status,minor_status,);
-		 
+
 		 if((retval = krb5_parse_name(deleg_ccache->ctx, nametmp.value, &princ))) {
 			 php_krb5_display_error(deleg_ccache->ctx, retval,  "Failed to parse principal name (%s)" TSRMLS_CC);
 			 RETURN_FALSE;
 		 }
-		 
+
 		 if((retval = krb5_cc_initialize(deleg_ccache->ctx, deleg_ccache->cc, princ))) {
 		 		krb5_free_principal(deleg_ccache->ctx,princ);
 		 		php_krb5_display_error(deleg_ccache->ctx, retval,  "Failed to initialize credential cache (%s)" TSRMLS_CC);
@@ -917,11 +852,7 @@ PHP_METHOD(GSSAPIContext, wrap)
 	memset(&input, 0 , sizeof(input));
 	memset(&output, 0 , sizeof(output));
 
-#if PHP_MAJOR_VERSION >= 7
 	const char *args = "sz/|b";
-#else
-	const char *args = "sz|b";
-#endif
 
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, args,
 			&(input.value), &input_length,
@@ -971,11 +902,7 @@ PHP_METHOD(GSSAPIContext, unwrap)
 	memset(&input, 0 , sizeof(input));
 	memset(&output, 0 , sizeof(output));
 
-#if PHP_MAJOR_VERSION >= 7
 	const char *args = "sz/";
-#else
-	const char *args = "sz";
-#endif
 
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, args,
 			&(input.value), &input_length,
diff --git a/kadm.c b/kadm.c
index af7721a..16a5512 100644
--- a/kadm.c
+++ b/kadm.c
@@ -98,14 +98,6 @@ void php_krb5_free_kadm5_object(krb5_kadm5_object *obj) {
 /* }}} */
 
 /* {{{ */
-#if PHP_MAJOR_VERSION < 7
-static void php_krb5_kadm5_object_dtor(void *obj, zend_object_handle handle TSRMLS_DC)
-{
-	krb5_kadm5_object *object = (krb5_kadm5_object*)obj;
-	zend_object_std_dtor(&(object->std) TSRMLS_CC);
-	php_krb5_free_kadm5_object(object);
-}
-#else
 static void php_krb5_kadm5_object_free(zend_object *obj TSRMLS_DC)
 {
 	krb5_kadm5_object *object = (krb5_kadm5_object*)((char *)obj - XtOffsetOf(krb5_kadm5_object, std));
@@ -123,35 +115,9 @@ static void php_krb5_kadm5_object_free(zend_object *obj TSRMLS_DC)
 	}
 	zend_object_std_dtor(obj);
 }
-#endif
 /* }}} */
 
 /* {{{ */
-#if PHP_MAJOR_VERSION < 7
-zend_object_value php_krb5_kadm5_object_new(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	krb5_kadm5_object *object;
-
-	object = emalloc(sizeof(krb5_kadm5_object));
-	memset(&object->config, 0, sizeof (kadm5_config_params));
-
-	zend_object_std_init(&(object->std), ce TSRMLS_CC);
-
-#if PHP_VERSION_ID < 50399
-	zend_hash_copy(object->std.properties, &ce->default_properties,
-					(copy_ctor_func_t) zval_add_ref, NULL,
-					sizeof(zval*));
-#else
-	object_properties_init(&(object->std), ce);
-#endif
-
-	retval.handle = zend_objects_store_put(object, php_krb5_kadm5_object_dtor, NULL, NULL TSRMLS_CC);
-
-	retval.handlers = &krb5_kadm5_handlers;
-	return retval;
-}
-#else
 zend_object* php_krb5_kadm5_object_new(zend_class_entry *ce TSRMLS_DC)
 {
 	krb5_kadm5_object *object = ecalloc(1, sizeof(krb5_kadm5_object) + zend_object_properties_size(ce));
@@ -160,7 +126,6 @@ zend_object* php_krb5_kadm5_object_new(zend_class_entry *ce TSRMLS_DC)
 	object->std.handlers = &krb5_kadm5_handlers;
 	return &object->std;
 }
-#endif
 /* }}} */
 
 /* Register classes */
@@ -173,10 +138,8 @@ int php_krb5_kadm5_register_classes(TSRMLS_D) {
 	krb5_ce_kadm5 = zend_register_internal_class(&kadm5 TSRMLS_CC);
 	krb5_ce_kadm5->create_object = php_krb5_kadm5_object_new;
 	memcpy(&krb5_kadm5_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
-#if PHP_MAJOR_VERSION >= 7
 	krb5_kadm5_handlers.offset = XtOffsetOf(krb5_kadm5_object, std);
 	krb5_kadm5_handlers.free_obj = php_krb5_kadm5_object_free;
-#endif
 
 	/** register KADM5Principal **/
 	php_krb5_register_kadm5_principal(TSRMLS_C);
@@ -276,7 +239,7 @@ PHP_METHOD(KADM5, __construct)
 		RETURN_FALSE;
 	}
 
-		
+
 	if(!use_keytab) {
  		retval = kadm5_init_with_password(obj->ctx, sprinc, spass, KADM5_ADMIN_SERVICE, &obj->config, 
  						KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, &obj->handle);
@@ -288,20 +251,11 @@ PHP_METHOD(KADM5, __construct)
 			obj->ctx = NULL;
 			RETURN_FALSE;
 		}
-#if PHP_VERSION_ID < 50399
-  		if((PG(safe_mode) && !php_checkuid(spass, NULL, CHECKUID_CHECK_FILE_AND_DIR)) ||
-  			php_check_open_basedir(spass TSRMLS_CC)) {
-			krb5_free_context(obj->ctx);
-			obj->ctx = NULL;
-  			RETURN_FALSE;
-  		}
-#else
   		if( php_check_open_basedir(spass TSRMLS_CC)) {
 			krb5_free_context(obj->ctx);
 			obj->ctx = NULL;
   			RETURN_FALSE;
   		}
-#endif
 
  		retval = kadm5_init_with_skey(obj->ctx,sprinc, spass, KADM5_ADMIN_SERVICE, &obj->config, 
  						KADM5_STRUCT_VERSION, KADM5_API_VERSION_3, NULL, &obj->handle);
@@ -324,8 +278,6 @@ PHP_METHOD(KADM5, __construct)
 	Fetch a principal entry by name */
 PHP_METHOD(KADM5, getPrincipal)
 {
-	
-
 	zval *sprinc = NULL;
 	zend_bool noload = FALSE;
 
@@ -335,32 +287,6 @@ PHP_METHOD(KADM5, getPrincipal)
 
 	object_init_ex(return_value, krb5_ce_kadm5_principal);
 
-#if PHP_MAJOR_VERSION < 7
-	zval *dummy_retval, *ctor, *znoload;
-	zval *args[3];
-	MAKE_STD_ZVAL(ctor);
-	ZVAL_STRING(ctor, "__construct",1);
-	MAKE_STD_ZVAL(znoload);
-	ZVAL_BOOL(znoload, noload);
-
-
-	args[0] = sprinc;
-	args[1] = getThis();
-	args[2] = znoload;
-
-	MAKE_STD_ZVAL(dummy_retval);
-	if(call_user_function(&krb5_ce_kadm5_principal->function_table,
-							&return_value, ctor, dummy_retval, 3,
-							args TSRMLS_CC) == FAILURE) {
-		zval_dtor(ctor);
-		zval_dtor(dummy_retval);
-		zend_throw_exception(NULL, "Failed to instantiate KADM5Principal object", 0 TSRMLS_CC);
-	}
-
-	zval_ptr_dtor(&ctor);
-	zval_ptr_dtor(&dummy_retval);
-	zval_ptr_dtor(&znoload);
-#else
 	zval ctor;
 	zval args[3];
 	zval dummy_retval;
@@ -368,8 +294,8 @@ PHP_METHOD(KADM5, getPrincipal)
 	args[0] = *sprinc;
 	args[1] = *getThis();
 	ZVAL_BOOL(&args[2], noload);
-	if(call_user_function(&krb5_ce_kadm5_principal->function_table, return_value, &ctor, &dummy_retval, 3, 
-							args TSRMLS_CC) == FAILURE) {	
+	if(call_user_function(&krb5_ce_kadm5_principal->function_table, return_value, &ctor, &dummy_retval, 3,
+							args TSRMLS_CC) == FAILURE) {
 		zval_dtor(&ctor);
 		zval_dtor(&dummy_retval);
 		zval_dtor(&args[2]);
@@ -379,7 +305,6 @@ PHP_METHOD(KADM5, getPrincipal)
 	zval_dtor(&ctor);
 	zval_dtor(&dummy_retval);
 	zval_dtor(&args[2]);
-#endif
 } /* }}} */
 
 /* {{{ proto array KADM5::getPrinicipals([string $filter])
@@ -445,13 +370,8 @@ PHP_METHOD(KADM5, createPrincipal)
 	principal = KRB5_KADM_PRINCIPAL(princ);
 	obj = KRB5_THIS_KADM;
 
-#if PHP_MAJOR_VERSION < 7
-	princname = zend_read_property(krb5_ce_kadm5_principal, princ, "princname",
-									sizeof("princname"),1 TSRMLS_CC);
-#else
 	princname = zend_read_property(krb5_ce_kadm5_principal, OBJ_FOR_PROP(princ), "princname",
 									sizeof("princname"),1, NULL);
-#endif
 	if ( principal->data.principal ) {
 		krb5_free_principal(obj->ctx, principal->data.principal);
 	}
@@ -475,31 +395,11 @@ PHP_METHOD(KADM5, createPrincipal)
 		return;
 	}
 
-
-#if PHP_MAJOR_VERSION < 7
-	zval *dummy_retval = NULL, *func = NULL;
-	MAKE_STD_ZVAL(func);
-	ZVAL_STRING(func, "load", 1);
-	MAKE_STD_ZVAL(dummy_retval);
-	if(call_user_function(&krb5_ce_kadm5_principal->function_table,
-							&princ, func, dummy_retval, 0,
-							NULL TSRMLS_CC) == FAILURE) {
-
-		zval_ptr_dtor(&func);
-		zval_ptr_dtor(&dummy_retval);
-
-		zend_throw_exception(NULL, "Failed to update KADM5Principal object", 0 TSRMLS_CC);
-		return;
-	}
-
-	zval_ptr_dtor(&func);
-	zval_ptr_dtor(&dummy_retval);
-#else
 	zval func;
 	zval dummy_retval;
 	ZVAL_STRING(&func, "load");
-	if(call_user_function(&krb5_ce_kadm5_principal->function_table, princ, &func, &dummy_retval, 0, 
-							NULL TSRMLS_CC) == FAILURE) {	
+	if(call_user_function(&krb5_ce_kadm5_principal->function_table, princ, &func, &dummy_retval, 0,
+							NULL TSRMLS_CC) == FAILURE) {
 		zval_dtor(&func);
 		zval_dtor(&dummy_retval);
 		zend_throw_exception(NULL, "Failed to update KADM5Principal object", 0 TSRMLS_CC);
@@ -507,15 +407,12 @@ PHP_METHOD(KADM5, createPrincipal)
 	}
 	zval_dtor(&func);
 	zval_dtor(&dummy_retval);
-#endif
 }
 
 /* {{{ proto KADM5Policy KADM5::getPolicy(string $policy)
 	Fetches a policy */
 PHP_METHOD(KADM5, getPolicy)
 {
-	
-
 	zval *spolicy = NULL;
 
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &spolicy) == FAILURE) {
@@ -524,36 +421,14 @@ PHP_METHOD(KADM5, getPolicy)
 
 	object_init_ex(return_value, krb5_ce_kadm5_policy);
 
-#if PHP_MAJOR_VERSION < 7
-	zval *dummy_retval, *ctor;
-	zval *args[2];
-	MAKE_STD_ZVAL(ctor);
-	ZVAL_STRING(ctor, "__construct", 1);
-
-	args[0] = spolicy;
-	args[1] = getThis();
-
-	MAKE_STD_ZVAL(dummy_retval);
-	if(call_user_function(&krb5_ce_kadm5_policy->function_table,
-							&return_value, ctor, dummy_retval, 2,
-							args TSRMLS_CC) == FAILURE) {
-		zval_dtor(ctor);
-		zval_dtor(dummy_retval);
-		zend_throw_exception(NULL, "Failed to instantiate KADM5Policy object", 0 TSRMLS_CC);
-		return;
-	}
-
-	zval_ptr_dtor(&ctor);
-	zval_ptr_dtor(&dummy_retval);
-#else
 	zval ctor;
 	zval args[2];
 	zval dummy_retval;
 	ZVAL_STRING(&ctor, "__construct");
 	args[0] = *spolicy;
 	args[1] = *getThis();
-	if(call_user_function(&krb5_ce_kadm5_policy->function_table, return_value, &ctor, &dummy_retval, 2, 
-							args TSRMLS_CC) == FAILURE) {	
+	if(call_user_function(&krb5_ce_kadm5_policy->function_table, return_value, &ctor, &dummy_retval, 2,
+							args TSRMLS_CC) == FAILURE) {
 		zval_dtor(&ctor);
 		zval_dtor(&dummy_retval);
 		zend_throw_exception(NULL, "Failed to instantiate KADM5Policy object", 0 TSRMLS_CC);
@@ -561,7 +436,6 @@ PHP_METHOD(KADM5, getPolicy)
 	}
 	zval_dtor(&ctor);
 	zval_dtor(&dummy_retval);
-#endif
 } /* }}} */
 
 /* {{{ proto void KADM5::createPolicy(KADM5Policy $policy)
@@ -597,28 +471,11 @@ PHP_METHOD(KADM5, createPolicy) {
 
 	policy->data.policy = NULL;
 
-#if PHP_MAJOR_VERSION < 7
-	zval *dummy_retval, *func;
-	MAKE_STD_ZVAL(func);
-	ZVAL_STRING(func, "load", 1);
-	MAKE_STD_ZVAL(dummy_retval);
-	if(call_user_function(&krb5_ce_kadm5_policy->function_table,
-							&zpolicy, func, dummy_retval, 0,
-							NULL TSRMLS_CC) == FAILURE) {
-		zval_ptr_dtor(&func);
-		zval_ptr_dtor(&dummy_retval);
-		zend_throw_exception(NULL, "Failed to update KADM5Policy object", 0 TSRMLS_CC);
-		return;
-	}
-
-	zval_ptr_dtor(&func);
-	zval_ptr_dtor(&dummy_retval);
-#else
 	zval func;
 	zval dummy_retval;
 	ZVAL_STRING(&func, "load");
-	if(call_user_function(&krb5_ce_kadm5_policy->function_table, zpolicy, &func, &dummy_retval, 0, 
-							NULL TSRMLS_CC) == FAILURE) {	
+	if(call_user_function(&krb5_ce_kadm5_policy->function_table, zpolicy, &func, &dummy_retval, 0,
+							NULL TSRMLS_CC) == FAILURE) {
 		zval_dtor(&func);
 		zval_dtor(&dummy_retval);
 		zend_throw_exception(NULL, "Failed to update KADM5Policy object", 0 TSRMLS_CC);
@@ -626,7 +483,6 @@ PHP_METHOD(KADM5, createPolicy) {
 	}
 	zval_dtor(&func);
 	zval_dtor(&dummy_retval);
-#endif
 } /* }}} */
 
 /* {{{ proto array KADM5::getPolicies([string $filter])
diff --git a/kadm5_policy.c b/kadm5_policy.c
index 4fd670e..324b275 100644
--- a/kadm5_policy.c
+++ b/kadm5_policy.c
@@ -1,16 +1,16 @@
 /**
 * Copyright (c) 2007 Moritz Bechler
-* 
+*
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
-* 
+*
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
-* 
+*
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -92,24 +92,6 @@ static zend_function_entry krb5_kadm5_policy_functions[] = {
 
 zend_object_handlers krb5_kadm5_policy_handlers;
 
-#if PHP_MAJOR_VERSION < 7
-static void php_krb5_kadm5_policy_object_dtor(void *obj, zend_object_handle handle TSRMLS_DC)
-{
-	krb5_kadm5_policy_object *object = (krb5_kadm5_policy_object*)obj;
-
-
-	if(object->policy) {
-		efree(object->policy);
-	}
-
-	krb5_kadm5_object *conn = object->conn;
-	if(conn) {
-		kadm5_free_policy_ent(conn->handle, &object->data);
-	}
-	zend_object_std_dtor(&(object->std) TSRMLS_CC);
-	efree(object);
-}
-#else
 static void php_krb5_kadm5_policy_object_free(zend_object *obj) {
 	krb5_kadm5_policy_object *object = (krb5_kadm5_policy_object*)((char *)obj - XtOffsetOf(krb5_kadm5_policy_object, std));
 	krb5_kadm5_object *conn = object->conn;
@@ -121,7 +103,6 @@ static void php_krb5_kadm5_policy_object_free(zend_object *obj) {
 	}
 	zend_object_std_dtor(obj);
 }
-#endif
 
 int php_krb5_register_kadm5_policy(TSRMLS_D) {
 	zend_class_entry kadm5_policy;
@@ -129,43 +110,12 @@ int php_krb5_register_kadm5_policy(TSRMLS_D) {
 	krb5_ce_kadm5_policy = zend_register_internal_class(&kadm5_policy TSRMLS_CC);
 	krb5_ce_kadm5_policy->create_object = php_krb5_kadm5_policy_object_new;
 	memcpy(&krb5_kadm5_policy_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
-#if PHP_MAJOR_VERSION >= 7
 	krb5_kadm5_policy_handlers.offset = XtOffsetOf(krb5_kadm5_policy_object, std);
 	krb5_kadm5_policy_handlers.free_obj = php_krb5_kadm5_policy_object_free;
-#endif
 	return SUCCESS;
 }
 
 
-#if PHP_MAJOR_VERSION < 7
-zend_object_value php_krb5_kadm5_policy_object_new(zend_class_entry *ce TSRMLS_DC) 
-{
-	zend_object_value retval;
-	krb5_kadm5_policy_object *object;
-	extern zend_object_handlers krb5_kadm5_policy_handlers;
-
-	object = emalloc(sizeof(krb5_kadm5_policy_object));
-
-	memset(&object->data, 0, sizeof(kadm5_policy_ent_rec));
-	object->conn = NULL;
-	object->update_mask = 0;
-	
-	zend_object_std_init(&(object->std), ce TSRMLS_CC);
-
-#if PHP_VERSION_ID < 50399
-	zend_hash_copy(object->std.properties, &ce->default_properties,
-					(copy_ctor_func_t) zval_add_ref, NULL, 
-					sizeof(zval*));
-#else
-	object_properties_init(&(object->std), ce);
-#endif
-
-	retval.handle = zend_objects_store_put(object, php_krb5_kadm5_policy_object_dtor, NULL, NULL TSRMLS_CC);
-
-	retval.handlers = &krb5_kadm5_policy_handlers;
-	return retval;
-}
-#else
 zend_object* php_krb5_kadm5_policy_object_new(zend_class_entry *ce TSRMLS_DC) {
 	krb5_kadm5_policy_object *object = ecalloc(1, sizeof(krb5_kadm5_policy_object) + zend_object_properties_size(ce));
 	zend_object_std_init(&object->std, ce TSRMLS_CC);
@@ -173,7 +123,6 @@ zend_object* php_krb5_kadm5_policy_object_new(zend_class_entry *ce TSRMLS_DC) {
 	object->std.handlers = &krb5_kadm5_policy_handlers;
 	return &object->std;
 }
-#endif
 
 /* {{{ proto KADM5Policy::__construct(string $policy [, KADM5 $conn ])
  */
@@ -201,23 +150,6 @@ PHP_METHOD(KADM5Policy, __construct)
 		zend_update_property(krb5_ce_kadm5_principal, OBJ_FOR_PROP(getThis()), "connection", sizeof("connection"), connobj TSRMLS_CC);
 		this->conn = KRB5_KADM(connobj);
 
-#if PHP_MAJOR_VERSION < 7
-		zval *dummy_retval, *func;
-		MAKE_STD_ZVAL(func);
-		_ZVAL_STRING(func, "load");
-		MAKE_STD_ZVAL(dummy_retval);
-		if(call_user_function(&krb5_ce_kadm5_policy->function_table, 
-								&getThis(), func, dummy_retval, 0, 
-								NULL TSRMLS_CC) == FAILURE) {
-			zval_ptr_dtor(&func);
-			zval_ptr_dtor(&dummy_retval);
-			zend_throw_exception(NULL, "Failed to update KADM5Policy object", 0 TSRMLS_CC);
-			return;
-		}
-
-		zval_ptr_dtor(&func);
-		zval_ptr_dtor(&dummy_retval);
-#else	
 		zval func;
 		zval dummy_retval;
 		_ZVAL_STRING(&func, "load");
@@ -230,16 +162,11 @@ PHP_METHOD(KADM5Policy, __construct)
 		}
 		zval_ptr_dtor(&func);
 		zval_ptr_dtor(&dummy_retval);
-#endif
 	}
 }
 /* }}} */
 
-#if PHP_MAJOR_VERSION < 7
-#define KRB5_KADM_POLICY_GET_CONNECTION zend_read_property(krb5_ce_kadm5_policy, getThis(), "connection", sizeof("connection"),1 TSRMLS_CC);
-#else
 #define KRB5_KADM_POLICY_GET_CONNECTION zend_read_property(krb5_ce_kadm5_policy, OBJ_FOR_PROP(getThis()), "connection", sizeof("connection"),1, NULL);
-#endif
 
 /* {{{ proto KADM5Policy::load()
  */
@@ -258,7 +185,7 @@ PHP_METHOD(KADM5Policy, load)
 		zend_throw_exception(NULL, "No valid connection available", 0 TSRMLS_CC);
 		return;
 	}
-	
+
 	kadm5 = KRB5_KADM(connobj);
 	if(!kadm5) {
 		zend_throw_exception(NULL, "No valid connection available", 0 TSRMLS_CC);
@@ -399,7 +326,7 @@ PHP_METHOD(KADM5Policy, setMinPasswordLife)
 {
 	krb5_kadm5_policy_object *obj = KRB5_THIS_KADM_POLICY;
 	zend_long min_life;
-	
+
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &min_life) == FAILURE) {
 		RETURN_FALSE;
 	}
@@ -429,7 +356,7 @@ PHP_METHOD(KADM5Policy, setMaxPasswordLife)
 {
 	krb5_kadm5_policy_object *obj = KRB5_THIS_KADM_POLICY;
 	zend_long max_life;
-	
+
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &max_life) == FAILURE) {
 		RETURN_FALSE;
 	}
@@ -460,7 +387,7 @@ PHP_METHOD(KADM5Policy, setMinPasswordLength)
 {
 	krb5_kadm5_policy_object *obj = KRB5_THIS_KADM_POLICY;
 	zend_long min_length;
-	
+
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &min_length) == FAILURE) {
 		RETURN_FALSE;
 	}
@@ -490,7 +417,7 @@ PHP_METHOD(KADM5Policy, setMinPasswordClasses)
 {
 	krb5_kadm5_policy_object *obj = KRB5_THIS_KADM_POLICY;
 	zend_long min_classes;
-	
+
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &min_classes) == FAILURE) {
 		RETURN_FALSE;
 	}
@@ -520,7 +447,7 @@ PHP_METHOD(KADM5Policy, setHistoryNum)
 {
 	krb5_kadm5_policy_object *obj = KRB5_THIS_KADM_POLICY;
 	zend_long history_num;
-	
+
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &history_num) == FAILURE) {
 		RETURN_FALSE;
 	}
@@ -564,7 +491,7 @@ PHP_METHOD(KADM5Policy, setLockoutDuration)
 {
 	krb5_kadm5_policy_object *obj = KRB5_THIS_KADM_POLICY;
 	zend_long duration;
-	
+
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &duration) == FAILURE) {
 		RETURN_FALSE;
 	}
@@ -594,7 +521,7 @@ PHP_METHOD(KADM5Policy, setMaxFailureCount)
 {
 	krb5_kadm5_policy_object *obj = KRB5_THIS_KADM_POLICY;
 	zend_long maxfail;
-	
+
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &maxfail) == FAILURE) {
 		RETURN_FALSE;
 	}
@@ -626,7 +553,7 @@ PHP_METHOD(KADM5Policy, setFailureInterval)
 {
 	krb5_kadm5_policy_object *obj = KRB5_THIS_KADM_POLICY;
 	zend_long failcnt_interval;
-	
+
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &failcnt_interval) == FAILURE) {
 		RETURN_FALSE;
 	}
diff --git a/kadm5_principal.c b/kadm5_principal.c
index 3715195..bad65cd 100644
--- a/kadm5_principal.c
+++ b/kadm5_principal.c
@@ -1,16 +1,16 @@
 /**
 * Copyright (c) 2007 Moritz Bechler
-* 
+*
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
-* 
+*
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
-* 
+*
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -103,20 +103,6 @@ static zend_function_entry krb5_kadm5_principal_functions[] = {
 zend_object_handlers krb5_kadm5_principal_handlers;
 
 /* KADM5Principal ctor/dtor */
-#if PHP_MAJOR_VERSION < 7
-static void php_krb5_kadm5_principal_object_dtor(void *obj, zend_object_handle handle TSRMLS_DC)
-{
-	krb5_kadm5_principal_object *object = (krb5_kadm5_principal_object*)obj;
-	
-	krb5_kadm5_object *conn = object->conn;
-	if(conn) {
-		kadm5_free_principal_ent(conn->handle, &object->data);
-	}
-
-	zend_object_std_dtor(&(object->std) TSRMLS_CC);
-	efree(object);
-}
-#else
 static void php_krb5_kadm5_principal_object_free(zend_object *obj TSRMLS_DC)
 {
 	krb5_kadm5_principal_object *object = (krb5_kadm5_principal_object*)((char *)obj - XtOffsetOf(krb5_kadm5_principal_object, std));
@@ -127,7 +113,6 @@ static void php_krb5_kadm5_principal_object_free(zend_object *obj TSRMLS_DC)
 	}
 	zend_object_std_dtor(obj);
 }
-#endif
 
 int php_krb5_register_kadm5_principal(TSRMLS_D) {
 	zend_class_entry kadm5_principal;
@@ -135,42 +120,11 @@ int php_krb5_register_kadm5_principal(TSRMLS_D) {
 	krb5_ce_kadm5_principal = zend_register_internal_class(&kadm5_principal TSRMLS_CC);
 	krb5_ce_kadm5_principal->create_object = php_krb5_kadm5_principal_object_new;
 	memcpy(&krb5_kadm5_principal_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
-#if PHP_MAJOR_VERSION >= 7
 	krb5_kadm5_principal_handlers.offset = XtOffsetOf(krb5_kadm5_principal_object, std);
 	krb5_kadm5_principal_handlers.free_obj = php_krb5_kadm5_principal_object_free;
-#endif
 	return SUCCESS;
 }
 
-#if PHP_MAJOR_VERSION < 7
-zend_object_value php_krb5_kadm5_principal_object_new(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	krb5_kadm5_principal_object *object;
-	extern zend_object_handlers krb5_kadm5_principal_handlers;
-
-	object = emalloc(sizeof(krb5_kadm5_principal_object));
-
-	memset(&object->data, 0, sizeof(kadm5_principal_ent_rec));
-	object->loaded = FALSE;
-	object->update_mask = 0;
-	object->conn = NULL;
-
-	zend_object_std_init(&(object->std), ce TSRMLS_CC);
-
-#if PHP_VERSION_ID < 50399
-	zend_hash_copy(object->std.properties, &ce->default_properties,
-					(copy_ctor_func_t) zval_add_ref, NULL, 
-					sizeof(zval*));
-#else
-	object_properties_init(&(object->std), ce);
-#endif
-
-	retval.handle = zend_objects_store_put(object, php_krb5_kadm5_principal_object_dtor, NULL, NULL TSRMLS_CC);
-	retval.handlers = &krb5_kadm5_principal_handlers;
-	return retval;
-}
-#else
 zend_object* php_krb5_kadm5_principal_object_new(zend_class_entry *ce TSRMLS_DC) {
 	krb5_kadm5_principal_object *object = ecalloc(1, sizeof(krb5_kadm5_principal_object) + zend_object_properties_size(ce));
 	zend_object_std_init(&object->std, ce TSRMLS_CC);
@@ -178,7 +132,6 @@ zend_object* php_krb5_kadm5_principal_object_new(zend_class_entry *ce TSRMLS_DC)
 	object->std.handlers = &krb5_kadm5_principal_handlers;
 	return &object->std;
 }
-#endif
 
 /* {{{ proto KADM5Principal KADM5Principal::__construct(string $principal [, KADM5 $connection [, boolean $noload] ])
  */
@@ -206,28 +159,11 @@ PHP_METHOD(KADM5Principal, __construct)
 		this->conn = KRB5_KADM(obj);
 
 		if ( noload != TRUE ) {
-#if PHP_MAJOR_VERSION < 7
-			zval *dummy_retval, *func;
-			MAKE_STD_ZVAL(func);
-			ZVAL_STRING(func, "load", 1);
-			MAKE_STD_ZVAL(dummy_retval);
-			if(call_user_function(&krb5_ce_kadm5_principal->function_table, 
-									&getThis(), func, dummy_retval, 0, 
-									NULL TSRMLS_CC) == FAILURE) {
-				zval_ptr_dtor(&func);
-				zval_ptr_dtor(&dummy_retval);
-				zend_throw_exception(NULL, "Failed to update KADM5Principal object", 0 TSRMLS_CC);
-				return;
-			}
-
-			zval_ptr_dtor(&func);
-			zval_ptr_dtor(&dummy_retval);
-#else
 			zval func;
 			zval dummy_retval;
 			ZVAL_STRING(&func, "load");
-			if(call_user_function(&krb5_ce_kadm5_policy->function_table, getThis(), &func, &dummy_retval, 0, 
-									NULL TSRMLS_CC) == FAILURE) {	
+			if(call_user_function(&krb5_ce_kadm5_policy->function_table, getThis(), &func, &dummy_retval, 0,
+									NULL TSRMLS_CC) == FAILURE) {
 				zval_dtor(&func);
 				zval_dtor(&dummy_retval);
 				zend_throw_exception(NULL, "Failed to update KADM5Policy object", 0 TSRMLS_CC);
@@ -235,24 +171,14 @@ PHP_METHOD(KADM5Principal, __construct)
 			}
 			zval_dtor(&func);
 			zval_dtor(&dummy_retval);
-#endif
 		}
 	}
 }
 /* }}} */
 
 
-#if PHP_MAJOR_VERSION < 7
-#define KRB5_KADM_PRINCIPAL_GET_CONNECTION zend_read_property(krb5_ce_kadm5_principal, getThis(), "connection", sizeof("connection"),1 TSRMLS_CC)
-#else
 #define KRB5_KADM_PRINCIPAL_GET_CONNECTION zend_read_property(krb5_ce_kadm5_principal, OBJ_FOR_PROP(getThis()), "connection", sizeof("connection"),1, NULL)
-#endif
-
-#if PHP_MAJOR_VERSION < 7
-#define KRB5_KADM_PRINCIPAL_GET_PRINCNAME zend_read_property(krb5_ce_kadm5_principal, getThis(), "princname", sizeof("princname"),1 TSRMLS_CC)
-#else
 #define KRB5_KADM_PRINCIPAL_GET_PRINCNAME zend_read_property(krb5_ce_kadm5_principal, OBJ_FOR_PROP(getThis()), "princname", sizeof("princname"),1, NULL)
-#endif
 
 /* {{{ proto KADM5Principal KADM5Principal::load()
  */
@@ -388,7 +314,7 @@ PHP_METHOD(KADM5Principal, changePassword)
 		zend_throw_exception(NULL, "No valid connection available", 0 TSRMLS_CC);
 		return;
 	}
-   
+
    	zend_string *pnstr = zval_get_string(princname TSRMLS_CC);
 	if(krb5_parse_name(kadm5->ctx, pnstr->val, &princ)) {
 		zend_string_release(pnstr);
@@ -499,7 +425,7 @@ PHP_METHOD(KADM5Principal, rename)
 		krb5_free_error_message(kadm5->ctx, errmsg);
 		return;
 	}
-	
+
 	if(dst_pw) {
 		retval = kadm5_chpass_principal(kadm5->handle, dst_princ, dst_pw);
 		if(retval != KADM5_OK) {
@@ -566,7 +492,7 @@ PHP_METHOD(KADM5Principal, getPropertyArray)
 	add_assoc_long(return_value, "last_pwd_change", obj->data.last_pwd_change);
 	add_assoc_long(return_value, "pw_expiration", obj->data.pw_expiration);
 	add_assoc_long(return_value, "max_life", obj->data.max_life);
-	
+
 	if ( obj->data.mod_name ) {
 		krb5_unparse_name(kadm5->ctx, obj->data.mod_name, &tstring);
 		_add_assoc_string(return_value, "mod_name", tstring);
@@ -600,7 +526,7 @@ PHP_METHOD(KADM5Principal, getPropertyArray)
 PHP_METHOD(KADM5Principal, getName)
 {
 	krb5_kadm5_principal_object *obj = KRB5_THIS_KADM_PRINCIPAL;
-	
+
 	if (zend_parse_parameters_none() == FAILURE) {
 		return;
 	}
@@ -782,7 +708,6 @@ PHP_METHOD(KADM5Principal, getLastModifier)
 		return;
 	}
 
-	
 	if(obj->loaded) {
 		connobj = KRB5_KADM_PRINCIPAL_GET_CONNECTION;
 		if ( Z_ISNULL_P(connobj)) {
@@ -794,7 +719,7 @@ PHP_METHOD(KADM5Principal, getLastModifier)
 			zend_throw_exception(NULL, "No valid connection available", 0 TSRMLS_CC);
 			return;
 		}
-		
+
 		krb5_unparse_name(kadm5->ctx,obj->data.mod_name,&princname);
 		_RETVAL_STRING(princname);
 		krb5_free_unparsed_name(kadm5->ctx, princname);
@@ -923,33 +848,13 @@ PHP_METHOD(KADM5Principal, getPolicy)
 			zend_throw_exception(NULL, "No valid connection available", 0 TSRMLS_CC);
 			return;
 		}
-		
-#if PHP_MAJOR_VERSION < 7
-		zval *func;
-		zval *args[1];
-		MAKE_STD_ZVAL(func);
-		ZVAL_STRING(func, "getPolicy", 1);
-		MAKE_STD_ZVAL(args[0]);
-		ZVAL_STRING(args[0], obj->data.policy, 1);
-		
-		if(call_user_function(&krb5_ce_kadm5_policy->function_table, 
-								&connobj, func, return_value, 1, 
-								args TSRMLS_CC) == FAILURE) {
-			zval_ptr_dtor(&args[0]);
-			zval_ptr_dtor(&func);
-			zend_throw_exception(NULL, "Failed to instantiate KADM5Policy object", 0 TSRMLS_CC);
-			return;
-		}
 
-		zval_ptr_dtor(&args[0]);
-		zval_ptr_dtor(&func);
-#else
 		zval func;
 		zval args[1];
 		ZVAL_STRING(&func, "getPolicy");
 		ZVAL_STRING(&args[0], obj->data.policy);
-		if(call_user_function(&krb5_ce_kadm5_policy->function_table, connobj, &func, return_value, 1, 
-								args TSRMLS_CC) == FAILURE) {	
+		if(call_user_function(&krb5_ce_kadm5_policy->function_table, connobj, &func, return_value, 1,
+								args TSRMLS_CC) == FAILURE) {
 			zval_dtor(&args[0]);
 			zval_dtor(&func);
 			zend_throw_exception(NULL, "Failed to instantiate KADM5Policy object", 0 TSRMLS_CC);
@@ -957,7 +862,6 @@ PHP_METHOD(KADM5Principal, getPolicy)
 		}
 		zval_dtor(&args[0]);
 		zval_dtor(&func);
-#endif
 	}
 }
 /* }}} */
@@ -1014,7 +918,7 @@ PHP_METHOD(KADM5Principal, setPolicy)
 /* {{{ proto KADM5Principal KADM5Principal::clearPolicy()
  */
 PHP_METHOD(KADM5Principal, clearPolicy)
-{	
+{
 	krb5_kadm5_principal_object *obj = KRB5_THIS_KADM_PRINCIPAL;
 
 	if (zend_parse_parameters_none() == FAILURE) {
@@ -1074,7 +978,7 @@ PHP_METHOD(KADM5Principal, getFailedAuthCount)
 PHP_METHOD(KADM5Principal, resetFailedAuthCount)
 {
 	krb5_kadm5_principal_object *obj = KRB5_THIS_KADM_PRINCIPAL;
-	
+
 	if (zend_parse_parameters_none() == FAILURE) {
 		return;
 	}
@@ -1090,7 +994,7 @@ PHP_METHOD(KADM5Principal, resetFailedAuthCount)
 PHP_METHOD(KADM5Principal, getTLData)
 {
 	krb5_kadm5_principal_object *obj = KRB5_THIS_KADM_PRINCIPAL;
-	
+
 	if (zend_parse_parameters_none() == FAILURE) {
 		return;
 	}
@@ -1107,7 +1011,7 @@ PHP_METHOD(KADM5Principal, setTLData)
 {
 	krb5_kadm5_principal_object *obj = KRB5_THIS_KADM_PRINCIPAL;
 	zval *array;
-	
+
 	if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &array) == FAILURE) {
 		RETURN_FALSE;
 	}
diff --git a/kadm5_tldata.c b/kadm5_tldata.c
index 1f653f7..c301fc8 100644
--- a/kadm5_tldata.c
+++ b/kadm5_tldata.c
@@ -1,16 +1,16 @@
 /**
 * Copyright (c) 2016 Moritz Bechler
-* 
+*
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
-* 
+*
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
-* 
+*
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -40,20 +40,6 @@ static zend_function_entry krb5_kadm5_tldata_functions[] = {
 zend_object_handlers krb5_kadm5_tldata_handlers;
 
 /* KADM5Principal ctor/dtor */
-#if PHP_MAJOR_VERSION < 7
-static void php_krb5_kadm5_tldata_object_dtor(void *obj, zend_object_handle handle TSRMLS_DC)
-{
-	krb5_kadm5_tldata_object *object = (krb5_kadm5_tldata_object*)obj;
-	zend_object_std_dtor(&(object->std) TSRMLS_CC);
-
-	if(object) {
-		if ( object->data.tl_data_contents ) {
-			efree(object->data.tl_data_contents);
-		}
-		efree(object);
-	}
-}
-#else
 static void php_krb5_kadm5_tldata_object_free(zend_object *obj TSRMLS_DC)
 {
 	krb5_kadm5_tldata_object *object = (krb5_kadm5_tldata_object*)((char *)obj - XtOffsetOf(krb5_kadm5_tldata_object, std));
@@ -61,7 +47,6 @@ static void php_krb5_kadm5_tldata_object_free(zend_object *obj TSRMLS_DC)
 		efree(object->data.tl_data_contents);
 	}
 }
-#endif
 
 int php_krb5_register_kadm5_tldata(TSRMLS_D) {
 
@@ -71,40 +56,12 @@ int php_krb5_register_kadm5_tldata(TSRMLS_D) {
 	krb5_ce_kadm5_tldata = zend_register_internal_class(&kadm5_tldata TSRMLS_CC);
 	krb5_ce_kadm5_tldata->create_object = php_krb5_kadm5_tldata_object_new;
 	memcpy(&krb5_kadm5_tldata_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
-#if PHP_MAJOR_VERSION >= 7
 	krb5_kadm5_tldata_handlers.offset = XtOffsetOf(krb5_kadm5_tldata_object, std);
 	krb5_kadm5_tldata_handlers.free_obj = php_krb5_kadm5_tldata_object_free;
-#endif
 	return SUCCESS;
 }
 
 
-#if PHP_MAJOR_VERSION < 7
-zend_object_value php_krb5_kadm5_tldata_object_new(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	krb5_kadm5_tldata_object *object;
-	extern zend_object_handlers krb5_kadm5_tldata_handlers;
-
-	object = emalloc(sizeof(krb5_kadm5_tldata_object));
-
-	memset(&object->data, 0, sizeof(krb5_tl_data));
-
-	zend_object_std_init(&(object->std), ce TSRMLS_CC);
-
-#if PHP_VERSION_ID < 50399
-	zend_hash_copy(object->std.properties, &ce->default_properties,
-					(copy_ctor_func_t) zval_add_ref, NULL, 
-					sizeof(zval*));
-#else
-	object_properties_init(&(object->std), ce);
-#endif
-
-	retval.handle = zend_objects_store_put(object, php_krb5_kadm5_tldata_object_dtor, NULL, NULL TSRMLS_CC);
-	retval.handlers = &krb5_kadm5_tldata_handlers;
-	return retval;
-}
-#else
 zend_object* php_krb5_kadm5_tldata_object_new(zend_class_entry *ce TSRMLS_DC)
 {
 	krb5_kadm5_tldata_object *object = ecalloc(1, sizeof(krb5_kadm5_tldata_object) + zend_object_properties_size(ce));
@@ -113,7 +70,6 @@ zend_object* php_krb5_kadm5_tldata_object_new(zend_class_entry *ce TSRMLS_DC)
 	object->std.handlers = &krb5_kadm5_tldata_handlers;
 	return &object->std;
 }
-#endif
 
 
 /* {{{ proto KADM5TLData KADM5TLData::__construct( long type [, string data])
@@ -186,7 +142,7 @@ void php_krb5_kadm5_tldata_free(krb5_tl_data *data, krb5_int16 count TSRMLS_DC)
          int n = count;
 	 while ( n > 0 && cur ) {
 	 	if ( cur->tl_data_contents ) {
-			free(cur->tl_data_contents);			
+			free(cur->tl_data_contents);
 		}
 		last = cur;
 	 	cur = cur->tl_data_next;
@@ -202,18 +158,8 @@ krb5_tl_data* php_krb5_kadm5_tldata_from_array(zval *array, krb5_int16* count TS
 	krb5_tl_data *head = NULL;
 	krb5_tl_data *cur = NULL;
 
-#if PHP_MAJOR_VERSION < 7
-	HashPosition pointer;
-	zval **entryp;
-	for(	zend_hash_internal_pointer_reset_ex(arr_hash, &pointer); 
-		zend_hash_get_current_data_ex(arr_hash, (void**) &entryp, &pointer) == SUCCESS; 
-		zend_hash_move_forward_ex(arr_hash, &pointer)) {
-
-		zval *entry = *entryp;
-#else
 	zval *entry;
 	ZEND_HASH_FOREACH_VAL(arr_hash, entry) {
-#endif
 		if ( Z_TYPE_P(entry) != IS_OBJECT || Z_OBJCE_P(entry) != krb5_ce_kadm5_tldata ) {
 			continue;
 		}
@@ -233,14 +179,7 @@ krb5_tl_data* php_krb5_kadm5_tldata_from_array(zval *array, krb5_int16* count TS
 		if ( head == NULL ) {
 			head = cur;
 		}
-#if PHP_MAJOR_VERSION < 7
-	}
-#else
 	} ZEND_HASH_FOREACH_END();
-#endif
 	*count = have_count;
 	return head;
 }
-
-
-
diff --git a/krb5.c b/krb5.c
index d00f554..5933a2a 100644
--- a/krb5.c
+++ b/krb5.c
@@ -26,7 +26,7 @@
  * 				renew(), getTktAttrs() methods; support more
  * 				options to initKeytab/Password(); check only
  * 				primary TGT in isValid(); fix some bugs.
- * 				
+ *
  * 2010-04-11 Moritz Bechler	RC2 release
  */
 
@@ -146,12 +146,8 @@ krb5_error_code php_krb5_display_error(krb5_context ctx, krb5_error_code code, c
 /*  Initialization functions */
 zend_object_handlers krb5_ccache_handlers;
 
-#if PHP_MAJOR_VERSION < 7
-zend_object_value php_krb5_ticket_object_new( zend_class_entry *ce TSRMLS_DC);
-#else
 zend_object *php_krb5_ticket_object_new(zend_class_entry *ce TSRMLS_DC);
 static void php_krb5_ccache_object_free(zend_object *obj TSRMLS_DC);
-#endif
 
 PHP_MINIT_FUNCTION(krb5)
 {
@@ -161,10 +157,8 @@ PHP_MINIT_FUNCTION(krb5)
 	krb5_ce_ccache = zend_register_internal_class(&krb5_ccache TSRMLS_CC);
 	krb5_ce_ccache->create_object = php_krb5_ticket_object_new;
 	memcpy(&krb5_ccache_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
-#if PHP_MAJOR_VERSION >= 7
 	krb5_ccache_handlers.offset = XtOffsetOf(krb5_ccache_object, std);
 	krb5_ccache_handlers.free_obj = php_krb5_ccache_object_free;
-#endif
 
 #ifdef HAVE_KADM5
 	if(php_krb5_kadm5_register_classes(TSRMLS_C) != SUCCESS) {
@@ -188,7 +182,7 @@ PHP_MINIT_FUNCTION(krb5)
 	REGISTER_LONG_CONSTANT("GSS_C_ACCEPT", GSS_C_ACCEPT, CONST_CS | CONST_PERSISTENT );
 
 	REGISTER_LONG_CONSTANT("GSS_C_NO_NAME", 0, CONST_CS | CONST_PERSISTENT );
-	
+
 #ifdef KRB5_TL_DB_ARGS
 	REGISTER_LONG_CONSTANT("KRB5_TL_DB_ARGS", KRB5_TL_DB_ARGS, CONST_CS | CONST_PERSISTENT );
 #endif
@@ -249,26 +243,6 @@ PHP_MINFO_FUNCTION(krb5)
 
 /*  Constructors/Destructors */
 /* {{{ */
-#if PHP_MAJOR_VERSION < 7
-static void php_krb5_ccache_object_dtor(void *obj, zend_object_handle handle TSRMLS_DC)
-{
-	krb5_ccache_object *ticket = (krb5_ccache_object*)obj;
-
-
-	if(ticket) {
-		OBJECT_STD_DTOR(ticket->std);
-
-		krb5_cc_destroy(ticket->ctx, ticket->cc);
-		krb5_free_context(ticket->ctx);
-
-		if(ticket->keytab) {
-			efree(ticket->keytab);
-		}
-
-		efree(ticket);
-	}
-}
-#else
 static void php_krb5_ccache_object_free(zend_object *obj TSRMLS_DC)
 {
 	krb5_ccache_object *ticket = (krb5_ccache_object*)((char *)obj - XtOffsetOf(krb5_ccache_object, std));
@@ -280,54 +254,10 @@ static void php_krb5_ccache_object_free(zend_object *obj TSRMLS_DC)
 	}
 	zend_object_std_dtor(obj);
 }
-#endif
 /* }}} */
 
 
 /* {{{ */
-#if PHP_MAJOR_VERSION < 7
-zend_object_value php_krb5_ticket_object_new(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	zend_object *failed;
-	krb5_ccache_object *object;
-	krb5_error_code ret = 0;
-
-	object = emalloc(sizeof(krb5_ccache_object));
-	memset(object, 0, sizeof(krb5_ccache_object));
-
-	/* intialize context */
-	if((ret = krb5_init_context(&object->ctx))) {
-		php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot initialize Kerberos5 context");
-		efree(object);		
-		return zend_objects_new(&failed, ce TSRMLS_CC);
-	}
-
-	// initialize random ccache
-	if((ret = krb5_cc_new_unique(object->ctx, "MEMORY", "", &object->cc))) {
-		const char *msg = krb5_get_error_message(object->ctx,ret);
-		php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot open credential cache: %s", msg);
-		krb5_free_error_message(object->ctx, msg);
-		krb5_free_context(object->ctx);
-		efree(object);		
-		return zend_objects_new(&failed, ce TSRMLS_CC);
-	}
-
-
-	INIT_STD_OBJECT(object->std, ce);
-#if PHP_VERSION_ID < 50399
-	zend_hash_copy(object->std.properties, &ce->default_properties,
-	        		(copy_ctor_func_t) zval_add_ref, NULL,
-					sizeof(zval*));
-#else
-	object_properties_init(&(object->std), ce);
-#endif
-
-	retval.handle = zend_objects_store_put(object, php_krb5_ccache_object_dtor, NULL, NULL TSRMLS_CC);
-	retval.handlers = &krb5_ccache_handlers;
-	return retval;
-}
-#else
 zend_object *php_krb5_ticket_object_new(zend_class_entry *ce TSRMLS_DC)
 {
 	krb5_ccache_object *object;
@@ -338,7 +268,7 @@ zend_object *php_krb5_ticket_object_new(zend_class_entry *ce TSRMLS_DC)
 	/* intialize context */
 	if((ret = krb5_init_context(&object->ctx))) {
 		php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot initialize Kerberos5 context");
-		efree(object);		
+		efree(object);
 		return zend_objects_new(ce);
 	}
 
@@ -348,7 +278,7 @@ zend_object *php_krb5_ticket_object_new(zend_class_entry *ce TSRMLS_DC)
 		php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot open credential cache: %s", msg);
 		krb5_free_error_message(object->ctx, msg);
 		krb5_free_context(object->ctx);
-		efree(object);		
+		efree(object);
 		return zend_objects_new(ce);
 	}
 
@@ -357,7 +287,6 @@ zend_object *php_krb5_ticket_object_new(zend_class_entry *ce TSRMLS_DC)
 	object->std.handlers = &krb5_ccache_handlers;
 	return &object->std;
 }
-#endif
 /* }}} */
 
 /* Helper functions */
@@ -404,7 +333,7 @@ static int php_krb5_parse_init_creds_opts(zval *opts, krb5_get_init_creds_opt *c
 	if (tmp != NULL) {
 		krb5_get_init_creds_opt_set_renew_life(cred_opts, zval_get_long(tmp TSRMLS_CC));
 	}
-	
+
 	/* service_name (krb5 arg "in_tkt_service") */
 	tmp = zend_compat_hash_find(HASH_OF(opts), "service_name", sizeof("service_name"));
 	if (tmp != NULL) {
@@ -885,17 +814,9 @@ PHP_METHOD(KRB5CCache, initKeytab)
 		RETURN_FALSE;
 	}
 
-#if PHP_VERSION_ID < 50399
-	if ( (PG(safe_mode) &&
-			!php_checkuid(skeytab, NULL, CHECKUID_CHECK_FILE_AND_DIR)) ||
-		php_check_open_basedir(skeytab TSRMLS_CC)) {
-		RETURN_FALSE;
-	}
-#else
 	if ( php_check_open_basedir(skeytab TSRMLS_CC)) {
 		RETURN_FALSE;
 	}
-#endif
 
     do {
 	memset(&princ, 0, sizeof(princ));
@@ -1306,9 +1227,6 @@ PHP_METHOD(KRB5CCache, getTktAttrs)
 #ifndef INET6_ADDRSTRLEN
 					_add_next_index_string(addrlist, inet_ntoa(ipaddr));
 				}
-#if 0
- { match curlies
-#endif
 #else /* ! INET6_ADDRSTRLEN */
 					if (inet_ntop(AF_INET, &ipaddr, straddr, sizeof(straddr))) {
 						_add_next_index_string(addrlist, straddr);
@@ -1425,7 +1343,6 @@ PHP_METHOD(KRB5CCache, renew)
    Changes a principal's password using kpasswd */
 PHP_METHOD(KRB5CCache, changePassword)
 {
-	
 	krb5_error_code retval = 0;
 	krb5_context ctx = NULL;
 	char *errstr = "";
diff --git a/negotiate_auth.c b/negotiate_auth.c
index ce88e26..bb89a36 100644
--- a/negotiate_auth.c
+++ b/negotiate_auth.c
@@ -34,9 +34,6 @@ zend_object_handlers krb5_negotiate_auth_handlers;
 
 zend_class_entry *krb5_ce_negotiate_auth;
 typedef struct _krb5_negotiate_auth_object {
-#if PHP_MAJOR_VERSION < 7
-	zend_object std;
-#endif
 	gss_name_t servname;
 	gss_name_t authed_user;
 	gss_cred_id_t delegated;
@@ -45,20 +42,13 @@ typedef struct _krb5_negotiate_auth_object {
 #ifdef HAVE_GSS_ACQUIRE_CRED_FROM
 	gss_key_value_set_desc cred_store;
 #endif
-#if PHP_MAJOR_VERSION >= 7
 	zend_object std;
-#endif
 } krb5_negotiate_auth_object;
 
 
 
-#if PHP_MAJOR_VERSION < 7
-static void php_krb5_negotiate_auth_object_dtor(void *obj, zend_object_handle handle TSRMLS_DC);
-zend_object_value php_krb5_negotiate_auth_object_new(zend_class_entry *ce TSRMLS_DC);
-#else
 static void php_krb5_negotiate_auth_object_free(zend_object *obj TSRMLS_DC);
 zend_object *php_krb5_ticket_object_new(zend_class_entry *ce TSRMLS_DC);
-#endif
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_KRB5NegotiateAuth_none, 0, 0, 0)
 ZEND_END_ARG_INFO()
@@ -118,22 +108,12 @@ static void php_krb5_negotiate_auth_object_free_data(krb5_negotiate_auth_object*
 #endif
 }
 /* {{{ */
-#if PHP_MAJOR_VERSION < 7
-static void php_krb5_negotiate_auth_object_dtor(void *obj, zend_object_handle handle TSRMLS_DC)
-{
-	krb5_negotiate_auth_object *object = (krb5_negotiate_auth_object*)obj;
-	OBJECT_STD_DTOR(object->std);
-	php_krb5_negotiate_auth_object_free_data(object);
-	efree(object);
-}
-#else
 static void php_krb5_negotiate_auth_object_free(zend_object *obj TSRMLS_DC)
 {
 	krb5_negotiate_auth_object *object = (krb5_negotiate_auth_object*)((char *)obj - XtOffsetOf(krb5_negotiate_auth_object, std));
 	php_krb5_negotiate_auth_object_free_data(object);
 	zend_object_std_dtor(obj);
 }
-#endif
 /* }}} */
 
 
@@ -146,33 +126,6 @@ static void setup_negotiate_auth(krb5_negotiate_auth_object *object TSRMLS_DC) {
 }
 
 /* {{{ */
-#if PHP_MAJOR_VERSION < 7
-zend_object_value php_krb5_negotiate_auth_object_new(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	krb5_negotiate_auth_object *object;
-	object = emalloc(sizeof(krb5_negotiate_auth_object));
-
-	setup_negotiate_auth(object TSRMLS_CC);
-
-
-	INIT_STD_OBJECT(object->std, ce);
-
-#if PHP_VERSION_ID < 50399
-	zend_hash_copy(object->std.properties, &ce->default_properties,
-	        		(copy_ctor_func_t) zval_add_ref, NULL,
-					sizeof(zval*));
-#else
-	object_properties_init(&(object->std), ce);
-#endif
-	ZVAL_NULL(&object->chan_bindings);
-
-	retval.handle = zend_objects_store_put(object, php_krb5_negotiate_auth_object_dtor, NULL, NULL TSRMLS_CC);
-
-	retval.handlers = &krb5_negotiate_auth_handlers;
-	return retval;
-}
-#else
 zend_object *php_krb5_negotiate_auth_object_new(zend_class_entry *ce TSRMLS_DC)
 {
 	krb5_negotiate_auth_object *object;
@@ -186,7 +139,6 @@ zend_object *php_krb5_negotiate_auth_object_new(zend_class_entry *ce TSRMLS_DC)
 	object->std.handlers = &krb5_negotiate_auth_handlers;
 	return &object->std;
 }
-#endif
 /* }}} */
 
 /* {{{ */
@@ -197,10 +149,8 @@ int php_krb5_negotiate_auth_register_classes(TSRMLS_D) {
 	krb5_ce_negotiate_auth = zend_register_internal_class(&negotiate_auth TSRMLS_CC);
 	krb5_ce_negotiate_auth->create_object = php_krb5_negotiate_auth_object_new;
 	memcpy(&krb5_negotiate_auth_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
-#if PHP_MAJOR_VERSION >= 7
 	krb5_negotiate_auth_handlers.offset = XtOffsetOf(krb5_negotiate_auth_object, std);
 	krb5_negotiate_auth_handlers.free_obj = php_krb5_negotiate_auth_object_free;
-#endif
 
 	return SUCCESS;
 }
@@ -344,11 +294,7 @@ PHP_METHOD(KRB5NegotiateAuth, doAuthentication)
 	/* get authentication data */
 	zval *auth_header = NULL;
 
-#if PHP_MAJOR_VERSION < 7
-	HashTable* server_vars = PG(http_globals)[TRACK_VARS_SERVER] != NULL ? PG(http_globals)[TRACK_VARS_SERVER]->value.ht : NULL;
-#else
 	HashTable* server_vars = Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]);
-#endif
 
 	if(server_vars && (auth_header = zend_compat_hash_find(server_vars, "HTTP_AUTHORIZATION", sizeof("HTTP_AUTHORIZATION"))) != NULL) {
 
@@ -362,14 +308,7 @@ PHP_METHOD(KRB5NegotiateAuth, doAuthentication)
  			zend_throw_exception(NULL, "Invalid negotiate authentication data given", 0 TSRMLS_CC);
  			return;
  		}
-#if PHP_MAJOR_VERSION < 7
-		int len = 0;
-		char *str = (char*) php_base64_decode_ex((unsigned char*) Z_STRVAL_P(auth_header)+10, Z_STRLEN_P(auth_header) - 10, &len, 1);
-		token = zend_string_init(str, len, 0);
-		efree(str);
-#else
 		token = php_base64_decode_ex((unsigned char*) Z_STRVAL_P(auth_header)+10, Z_STRLEN_P(auth_header) - 10, 1);
-#endif
 	} else {
 		// No authentication data given by the user agent
 		sapi_header_line ctr = {0};
@@ -466,16 +405,7 @@ PHP_METHOD(KRB5NegotiateAuth, doAuthentication)
 	}
 
 	if(output_token.length > 0) {
-
-#if PHP_MAJOR_VERSION < 7
-		int len = 0;
-		char *str = (char*) php_base64_encode(output_token.value, output_token.length, &len);
-		zend_string *encoded = zend_string_init(str, len, 0);
-		efree(str);
-#else
 		zend_string *encoded = php_base64_encode(output_token.value, output_token.length);
-#endif
-
 		sapi_header_line ctr = {0};
 
 		const char *prompt = "WWW-Authenticate: ";
diff --git a/php_krb5.h b/php_krb5.h
index e82e316..2425ccf 100644
--- a/php_krb5.h
+++ b/php_krb5.h
@@ -65,9 +65,6 @@ PHP_MINFO_FUNCTION(krb5);
 extern zend_class_entry *krb5_ce_ccache;
 
 typedef struct _krb5_ccache_object {
-#if PHP_MAJOR_VERSION < 7
-	zend_object std;
-#endif
 	krb5_context ctx;
 	krb5_ccache cc;
 	char *keytab;
@@ -75,9 +72,7 @@ typedef struct _krb5_ccache_object {
 	krb5_timestamp exp_password;
 	krb5_timestamp exp_account;
 	krb5_boolean exp_is_last_req;
-#if PHP_MAJOR_VERSION >= 7
 	zend_object std;
-#endif
 } krb5_ccache_object;
 
 krb5_error_code php_krb5_display_error(krb5_context ctx, krb5_error_code code, char* str TSRMLS_DC);
diff --git a/php_krb5_compat.h b/php_krb5_compat.h
index a10760b..d5b8867 100644
--- a/php_krb5_compat.h
+++ b/php_krb5_compat.h
@@ -17,112 +17,6 @@
 
 #endif
 
-#if PHP_MAJOR_VERSION < 7
-struct _zend_string {
-	char *val;
-	int   len;
-	int   persistent;
-};
-typedef struct _zend_string zend_string;
-typedef long zend_long;
-typedef int strsize_t;
-
-static zend_always_inline zend_string *zend_string_alloc(int len, int persistent)
-{
-	/* single alloc, so free the buf, will also free the struct */
-	char *buf = safe_pemalloc(sizeof(zend_string)+len+1,1,0,persistent);
-	zend_string *str = (zend_string *)(buf+len+1);
-
-	str->val = buf;
-	str->len = len;
-	str->persistent = persistent;
-
-	return str;
-}
-
-static zend_always_inline zend_string *zend_string_init(char *s, int len, int persistent) {
-	/* single alloc, so free the buf, will also free the struct */
-	char *buf = safe_pemalloc(sizeof(zend_string)+len+1,1,0,persistent);
-	zend_string *str = (zend_string *)(buf+len+1);
-
-	str->val = buf;
-	str->len = len;
-	str->persistent = persistent;
-
-	memcpy(str->val, s, len);
-
-	return str;
-}
-
-static zend_always_inline void zend_string_free(zend_string *s)
-{
-	pefree(s->val, s->persistent);
-}
-
-
-static zend_always_inline void zend_string_release(zend_string *s)
-{
-	zend_string_free(s);
-}
-/* compatibility macros */
-#define _RETURN_STRING(a)      RETURN_STRING(a,1)
-/* new macros */
-#define RETURN_NEW_STR(s)     RETURN_STRINGL(s->val,s->len,0);
-#define ZVAL_DEREF(z)
-
-#define Z_ISNULL_P(z) (z == NULL)
-
-#define _ZVAL_STRINGL(a,b,c) ZVAL_STRINGL(a,b,c,1)
-#define _ZVAL_STRING(a,b) ZVAL_STRING(a,b,1)
-#define _RETVAL_STRINGL(a,b) RETVAL_STRINGL(a,b,1)
-#define _RETVAL_STRING(a) RETVAL_STRING(a,1)
-
-#define _DECLARE_ZVAL(name) zval * name = NULL
-#define _INIT_ZVAL INIT_ZVAL
-#define _ALLOC_INIT_ZVAL(name) ALLOC_INIT_ZVAL(name)
-#define _RELEASE_ZVAL(name) zval_ptr_dtor(&name)
-#define _add_next_index_string(...) add_next_index_string(__VA_ARGS__, 1)
-#define _add_assoc_string(...) add_assoc_string(__VA_ARGS__, 1)
-#define _add_assoc_string_ex(...) add_assoc_string_ex(__VA_ARGS__, 1)
-#define _add_assoc_stringl_ex(...) add_assoc_stringl_ex(__VA_ARGS__, 1)
-
-//#define Z_OBJCE_P(zv) zend_get_class_entry(zv TSRMLS_CC)
-
-static inline long zval_get_long(zval *zv TSRMLS_DC) {
-	zval* copy;
-	long val;
-	MAKE_STD_ZVAL(copy);
-	MAKE_COPY_ZVAL(&zv, copy);
-	convert_to_long(copy);
-	val = Z_LVAL_P(copy);
-	zval_ptr_dtor(&copy);
-	return val;
-}
-
-static inline zend_string *zval_get_string(zval *zv TSRMLS_DC) {
-	zval* copy;
-	zend_string *val;
-	MAKE_STD_ZVAL(copy);
-	MAKE_COPY_ZVAL(&zv, copy);
-	convert_to_string(copy);
-	val = zend_string_init(Z_STRVAL_P(copy), Z_STRLEN_P(copy)+1, 0);
-	val->val[Z_STRLEN_P(copy)] = 0;
-	zval_ptr_dtor(&copy);
-	return val;
-}
-
-#define KRB5_CCACHE(zv) (krb5_ccache_object *) zend_object_store_get_object(zv TSRMLS_CC)
-#define KRB5_NEGOTIATE_AUTH(zv) (krb5_negotiate_auth_object *) zend_object_store_get_object(zv TSRMLS_CC)
-#define KRB5_GSSAPI_CONTEXT(zv) (krb5_gssapi_context_object *) zend_object_store_get_object(zv TSRMLS_CC)
-
-
-#define KRB5_KADM(zv) (krb5_kadm5_object*)zend_object_store_get_object(zv TSRMLS_CC)
-#define KRB5_KADM_POLICY(zv) (krb5_kadm5_policy_object*)zend_object_store_get_object(zv TSRMLS_CC)
-#define KRB5_KADM_PRINCIPAL(zv) (krb5_kadm5_principal_object*)zend_object_store_get_object(zv TSRMLS_CC)
-#define KRB5_KADM_TLDATA(zv) (krb5_kadm5_tldata_object*)zend_object_store_get_object(zv TSRMLS_CC)
-
-
-#else
 #include "zend_operators.h"
 
 typedef size_t strsize_t;
@@ -154,39 +48,18 @@ typedef size_t strsize_t;
 #define KRB5_KADM_PRINCIPAL(zv) (krb5_kadm5_principal_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_kadm5_principal_object, std))
 #define KRB5_KADM_TLDATA(zv) (krb5_kadm5_tldata_object*)((char *)Z_OBJ_P(zv) - XtOffsetOf(krb5_kadm5_tldata_object, std))
 
-#endif
-
 static zend_always_inline zval* zend_compat_hash_index_find(HashTable *ht, zend_ulong idx)
 {
-#if PHP_MAJOR_VERSION < 7
-	zval **tmp, *result;
-
-	if (zend_hash_index_find(ht, idx, (void **) &tmp) == FAILURE) {
-		return NULL;
-	}
-
-	result = *tmp;
-	return result;
-#else
 	return zend_hash_index_find(ht, idx);
-#endif
 }
 
 static zend_always_inline zval* zend_compat_hash_find(HashTable *ht, char *key, size_t len)
 {
-#if PHP_MAJOR_VERSION < 7
-	zval **tmp;
-	if (zend_hash_find(ht, key, len, (void **) &tmp) == FAILURE) {
-		return NULL;
-	}
-	return *tmp;
-#else
 	zval *result;
 	zend_string *key_str = zend_string_init(key, len-1, 0);
 	result = zend_hash_find(ht, key_str);
 	zend_string_release(key_str);
 	return result;
-#endif
 }
 
 #define KRB5_THIS_CCACHE KRB5_CCACHE(getThis())
@@ -202,61 +75,10 @@ static zend_always_inline zval* zend_compat_hash_find(HashTable *ht, char *key,
 
 
 
-/* PHP Compatability */
-#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
-
 #define INIT_STD_OBJECT(object, ce) zend_object_std_init(&(object), ce TSRMLS_CC);
-
-#else
-
-#define INIT_STD_OBJECT(object, ce) \
-	{ 	\
-		ALLOC_HASHTABLE(object.properties); \
-		zend_hash_init(object.properties,0, NULL, ZVAL_PTR_DTOR, 0); \
-		object.ce = ce; \
-		object.guards = NULL; \
-	}
-
-#endif
-
-
-#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
 #define OBJECT_STD_DTOR(object) zend_object_std_dtor(&(object) TSRMLS_CC);
-#else
-#define OBJECT_STD_DTOR(object) \
-	{ 	\
-		if(object.guards) { \
-			zend_hash_destroy(object.guards); \
-			FREE_HASHTABLE(object.guards); \
-		} \
-		if(object.properties) { \
-			zend_hash_destroy(object.properties); \
-			FREE_HASHTABLE(object.properties); \
-		} \
-	}
-#endif
 
-#if defined(PHP_VERSION_ID) && PHP_VERSION_ID >= 50400
 #define ARG_PATH "p"
-#else
-#define ARG_PATH "s"
-#endif
-
-#if defined(PHP_VERSION_ID) && PHP_VERSION_ID >= 50300
-/* php_set_error_handling() is deprecated */
 #define KRB5_SET_ERROR_HANDLING(type)  zend_replace_error_handling(type, NULL, NULL TSRMLS_CC)
-#else
-#define KRB5_SET_ERROR_HANDLING(type)  php_set_error_handling(type, NULL  TSRMLS_CC)
-#endif
-
-/* For PHP < 5.3 */
-#ifndef zend_parse_parameters_none
-#define zend_parse_parameters_none() zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "")
-#endif
-
-/* For PHP < 5.3 */
-#ifndef PHP_FE_END
-#define PHP_FE_END {NULL, NULL, NULL}
-#endif
 
 #endif
diff --git a/php_krb5_gssapi.h b/php_krb5_gssapi.h
index 0f26e10..7dbe8ab 100644
--- a/php_krb5_gssapi.h
+++ b/php_krb5_gssapi.h
@@ -54,13 +54,8 @@ int php_krb5_gssapi_register_classes(TSRMLS_D);
 int php_krb5_gssapi_shutdown(TSRMLS_D);
 
 
-#if PHP_MAJOR_VERSION < 7
-extern void php_krb5_gssapi_context_object_dtor(void *obj, zend_object_handle handle TSRMLS_DC);
-zend_object_value php_krb5_gssapi_context_object_new(zend_class_entry *ce TSRMLS_DC);
-#else
 extern void php_krb5_gssapi_context_object_free(zend_object *obj TSRMLS_DC);
 zend_object *php_krb5_gssapi_context_object_new(zend_class_entry *ce TSRMLS_DC);
-#endif
 
 
 #endif /* PHP_KRB5_GSSAPI_H */
diff --git a/php_krb5_kadm.h b/php_krb5_kadm.h
index 5f25ce1..233bd26 100644
--- a/php_krb5_kadm.h
+++ b/php_krb5_kadm.h
@@ -37,15 +37,10 @@
 	extern zend_class_entry *krb5_ce_kadm5;
 
 	typedef struct _krb5_kadm5_object {
-#if PHP_MAJOR_VERSION < 7
-		zend_object std;
-#endif
 		void *handle;
 		krb5_context ctx;
 		kadm5_config_params config;
-#if PHP_MAJOR_VERSION >= 7
 		zend_object std;
-#endif
 	} krb5_kadm5_object;
 
 	void php_krb5_free_kadm5_object(krb5_kadm5_object *obj);
@@ -65,25 +60,16 @@
 	extern zend_class_entry *krb5_ce_kadm5_principal;
 
 	typedef struct _krb5_kadm5_principal_object {
-#if PHP_MAJOR_VERSION < 7
-		zend_object std;
-#endif
 		int loaded;
 		long int update_mask;
 		kadm5_principal_ent_rec data;
 		krb5_kadm5_object *conn;
-#if PHP_MAJOR_VERSION >= 7
 		zend_object std;
-#endif
 	} krb5_kadm5_principal_object;
 
 	int php_krb5_register_kadm5_principal(TSRMLS_D);
 
-#if PHP_MAJOR_VERSION < 7
-	zend_object_value php_krb5_kadm5_principal_object_new(zend_class_entry *ce TSRMLS_DC);
-#else
 	zend_object* php_krb5_kadm5_principal_object_new(zend_class_entry *ce TSRMLS_DC);
-#endif
 
 	PHP_METHOD(KADM5Principal, __construct);
 	PHP_METHOD(KADM5Principal, load);
@@ -129,26 +115,17 @@
 	extern zend_class_entry *krb5_ce_kadm5_policy;
 
 	typedef struct _krb5_kadm5_policy_object {
-#if PHP_MAJOR_VERSION < 7
-		zend_object std;
-#endif
 		char *policy;
 		long int update_mask;
 		kadm5_policy_ent_rec data;
 		krb5_kadm5_object *conn;
-#if PHP_MAJOR_VERSION >= 7
 		zend_object std;
-#endif
 	} krb5_kadm5_policy_object;
 
 
 	int php_krb5_register_kadm5_policy(TSRMLS_D);
 
-#if PHP_MAJOR_VERSION < 7
-	zend_object_value php_krb5_kadm5_policy_object_new(zend_class_entry *ce TSRMLS_DC);
-#else
 	zend_object* php_krb5_kadm5_policy_object_new(zend_class_entry *ce TSRMLS_DC);
-#endif
 
 	PHP_METHOD(KADM5Policy, __construct);
 	PHP_METHOD(KADM5Policy, __destruct);
@@ -182,21 +159,12 @@
 	extern zend_class_entry *krb5_ce_kadm5_tldata;
 
 	typedef struct _krb5_kadm5_tldata_object {
-#if PHP_MAJOR_VERSION < 7
-		zend_object std;
-#endif
 		krb5_tl_data data;
-#if PHP_MAJOR_VERSION >= 7
 		zend_object std;
-#endif
 	} krb5_kadm5_tldata_object;
 
 	int php_krb5_register_kadm5_tldata(TSRMLS_D);
-#if PHP_MAJOR_VERSION < 7
-	zend_object_value php_krb5_kadm5_tldata_object_new(zend_class_entry *ce TSRMLS_DC);
-#else
 	zend_object* php_krb5_kadm5_tldata_object_new(zend_class_entry *ce TSRMLS_DC);
-#endif
 
 	PHP_METHOD(KADM5TLData, __construct);
 	PHP_METHOD(KADM5TLData, getType);