", $pos)) !== false) { $end = strpos($wevia, "", $m); if ($end === false) break; $content = substr($wevia, $m + 8, $end - $m - 8); if (strlen($content) > 20000) { $big = $content; $start_abs = substr_count(substr($wevia, 0, $m + 8), "\n") + 1; break; } $pos = $end + 9; } $tmp = "/tmp/wevia-big.js"; file_put_contents($tmp, $big); echo "Size: " . strlen($big) . "B\n"; echo "Start abs line in HTML: $start_abs\n\n"; // Try to parse with node $parse = @shell_exec("node --check $tmp 2>&1"); echo "=== node --check ===\n$parse\n\n"; // Also try to execute just to see if RUNTIME regex error appears $exec = @shell_exec("timeout 3 node -e \"const fs=require('fs'); const src=fs.readFileSync('$tmp','utf8'); try { new Function(src); console.log('new Function OK'); } catch(e) { console.log('new Function ERROR:', e.message); console.log(e.stack ? e.stack.split(String.fromCharCode(10))[0] : ''); }\" 2>&1"); echo "=== new Function test ===\n$exec\n";