Skip to content

Doc pcre.recursion_limit auf Windows Servern

Mairu edited this page Jun 16, 2012 · 7 revisions

Bei aktuellen Versionen des Apache Webservers (der bei XAMPP oder easyPHP zum Einsatz kommt) ist die Stackgröße zu klein (256kb) im Gegensatz zu der Linuxversion, wo dieser Wert bei 8MB liegt.

Dies führt zu Problemen bei der Verwendung von regulären Ausdrücken, wie sie in bei ilch mit dem Aufruf von preg_-Funktionen vorkommen.

Wenn der Fehler auftritt, wird bei der Installation vom Ilch-Script bzw. beim Ausführen der preg_-Funktionen der Apache ohne eines Eintrages in das LogFile abstürzen und somit kann die Installation nicht abgeschlossen werden bzw. das Skript nicht verwendet werden.

Weiter Informationen dazu: https://bugs.php.net/bug.php?id=47689 und http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error

Es gibt 2 Wege diesen Fehler zu verhindern, empfohlen ist die Anpassung der Apache Konfiguration bzw. die Änderung der StackSize mit CFF Explorer:

Apache Stack Size erhöhen

In der httpd.conf von Apache folgende Zeilen einfügen

<IfModule mpm_winnt_module>
    ThreadStackSize 8*1024*1024
</IfModule>

Damit wird die Stack Size auf 8MB erhöht und es sollte alles normal laufen

Wenn dies nicht klappen sollte, kann man auch mit dem CFF Explorer die StackSize auf 8 MB erhöhen, dazu du http.exe des Apache mit CFF Explorer öffnen und Nt Headers -> Optional Header -> SizeOfStackReserve von 00040000 auf 00800000 ändern und speichern. Danach schlug mein Virenprogramm an, aber das kann ignoriert werden.

Weiterhin sollte in der php.ini die pcre.recursion_limit trotzdem auf den Wert 167777 gesetzt werden.

PHP PCRE Recursion Limit reduzieren

In der php.ini den Wert von pcre.recursion_limit auf 524 reduzieren

Entwickler und User ohne Zugriff auf die php.ini können evtl mit folgender Zeile das Problem ebenso lösen: ini_set("pcre.recursion_limit", "524");