octobercms/october · error · Twig\Sandbox\SecurityNotAllowedMethodError
Calling "%s" method on a "%s" object is blocked.
Error message
Calling "%s" method on a "%s" object is blocked.
What it means
Error "Calling "%s" method on a "%s" object is blocked." thrown in octobercms/october.
Source
Thrown at modules/system/twig/SecurityPolicy.php:263
$className = get_class($obj);
throw new SecurityNotAllowedMethodError(sprintf('Calling any method on a "%s" object is blocked.', $className), $className, $method);
}
//
// Block-list
//
/**
* checkMethodAllowedBlocklist
*/
protected function checkMethodAllowedBlocklist($obj, $method)
{
$blockedMethod = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
// Check direct class blocklists
foreach ($this->blockedClassMethods as $blockedClass => $blockedMethods) {
if (is_a($obj, $blockedClass) && in_array($blockedMethod, $blockedMethods)) {
throw new SecurityNotAllowedMethodError(sprintf('Calling "%s" method on a "%s" object is blocked.', $method, $blockedClass), $blockedClass, $method);
}
}
// Check forwarder chains: if $obj's class forwards __call to another
// class, enforce that class's blocklist as well (transitively).
foreach ($this->blockedClassForwarders as $sourceClass => $targetClass) {
if (!is_a($obj, $sourceClass)) {
continue;
}
$cursor = $targetClass;
while ($cursor !== null) {
$targetMethods = $this->blockedClassMethods[$cursor] ?? [];
if (in_array($blockedMethod, $targetMethods)) {
throw new SecurityNotAllowedMethodError(sprintf('Calling "%s" method on a "%s" object is blocked.', $method, $sourceClass), $sourceClass, $method);
}
$cursor = $this->blockedClassForwarders[$cursor] ?? null;
}View on GitHub (pinned to b608633a7e)
When it happens
Trigger: Thrown at modules/system/twig/SecurityPolicy.php:263 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of octobercms/october@b608633a7e (2026-08-21).
Data as JSON: /api/errors/c2c25ff7e288dd82.
Report an issue: GitHub.