Die Ursache dafür ist ein PCRE Stack-Überlauf in der preg_match() Methode, also nicht ein CONTENIDO Problem. Es passiert beim Überprüfen von langen Texten auf das Vorhandensein von UTF-8 Zeichen. Siehe auch Eintrag im PHP-Bug Tracker.
Beheben kann man das vorerst indem man die zu überprüfenden Texte in kleinere Einheiten teilt. Bis es ein neues Release gibt, könnt ihr das folgendermaßen lösen:
Die Datei contenido/includes/functions.general.php öffnen und die Funktion is_utf8() gegen
Code: Alles auswählen
function is_utf8($input)
{
// FIXME: Split long strings into smaller chunks otherwhise we could end up in a PCRE
// stack overflow and a PHP crash, see https://bugs.php.net/bug.php?id=61213
// TODO: Use mb_detect_encoding if available
if (strlen($input) > 128) {
$inputList = explode("\n", chunk_split($input, 128, "\n"));
} else {
$inputList = array($input);
}
foreach ($inputList as $item) {
$result = preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $item);
if ($result) {
return true;
}
}
return false;
}