diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c
index 42b48ce058aa65b4b6b45eeb57773807d40762e5..60c650323569830d90dec9d5a2a8caa0dd7b292f 100644
--- a/src/sbbs3/sbbs_ini.c
+++ b/src/sbbs3/sbbs_ini.c
@@ -113,6 +113,7 @@ void sbbs_read_ini(
 {
 	const char*	section;
 	const char* default_term;
+	const char*	default_cgi_temp;
 	char*		ctrl_dir;
 	char*		host_name;
 
@@ -316,6 +317,15 @@ void sbbs_read_ini(
 	SAFECOPY(web->error_dir
 		,iniReadString(fp,section,"ErrorDirectory","../html/error"));
 
+#ifdef __unix__
+	default_cgi_temp = "/tmp";
+#else
+	if((default_cgi_temp = getenv("TEMP")) == NULL)
+		default_cgi_temp = "";
+#endif
+	SAFECOPY(web->cgi_temp_dir
+		,iniReadString(fp,section,"CGITempDirectory",default_cgi_temp));
+
 	web->options
 		=iniReadBitField(fp,section,"Options",web_options
 			,BBS_OPT_NO_HOST_LOOKUP);
diff --git a/src/sbbs3/websrvr.h b/src/sbbs3/websrvr.h
index 99e1f43652bbc255503d337548637fbda00d1467..cd45e80e7eabc73f82289f8ab9c707be0604eee8 100644
--- a/src/sbbs3/websrvr.h
+++ b/src/sbbs3/websrvr.h
@@ -78,6 +78,7 @@ typedef struct {
     char    ctrl_dir[128];
     char	root_dir[128];
     char	error_dir[128];
+    char	cgi_temp_dir[128];
     char	reserved_path7[128];
     char	reserved_path6[128];
     char	reserved_path5[128];