diff --git a/src/etc/rc.php_ini_setup b/src/etc/rc.php_ini_setup
index 3cfda8eeda..1fdd79b897 100755
--- a/src/etc/rc.php_ini_setup
+++ b/src/etc/rc.php_ini_setup
@@ -77,6 +77,20 @@ else
 	fi
 fi
 
+PCRE_RECURSION_LIMIT=100000
+STACKSIZE=$(/usr/bin/ulimit -s)
+if [ ${STACKSIZE} -gt 32000 -a ${STACKSIZE} -le 64000 ]; then
+	PCRE_RECURSION_LIMIT=64000
+elif [ ${STACKSIZE} -gt 16000 -a ${STACKSIZE} -le 32000 ]; then
+	PCRE_RECURSION_LIMIT=32000
+elif [ ${STACKSIZE} -gt 8000 -a ${STACKSIZE} -le 16000 ]; then
+	PCRE_RECURSION_LIMIT=16000
+elif [ ${STACKSIZE} -gt 4000 -a ${STACKSIZE} -le 8000 ]; then
+	PCRE_RECURSION_LIMIT=8000
+elif [ ${STACKSIZE} -le 4000 ]; then
+	PCRE_RECURSION_LIMIT=500
+fi
+
 # Set upload directory
 UPLOADTMPDIR="/tmp"
 
@@ -206,6 +220,9 @@ session.hash_bits_per_character = 5
 session.hash_function = 1
 ${error_reporting}
 
+[Pcre]
+pcre.recursion_limit = ${PCRE_RECURSION_LIMIT}
+
 ; Extensions
 
 EOF
