phalcon/cphalcon · error · Phalcon\Acl\Exceptions\MissingFunctionParameters

You did not provide all necessary parameters for the defined

Error message

You did not provide all necessary parameters for the defined function when checking if '{roleName}' can '{access}' for '{componentName}'.

What it means

BeanstalkConnection surfaces beanstalkd's 'JOB_TOO_BIG' reply as an exception: the put() job body exceeds the server's max-job-size (default 65535 bytes, configurable at server start with -z). The server rejects the job; nothing is queued.

Source

Thrown at phalcon/Acl/Adapter/Memory.zep:1092

                );

                return haveAccess == Enum::ALLOW && this->noArgumentsDefaultAction == Enum::ALLOW;
            }

            /**
             * Number of required parameters == 0 so call funcAccess without
             * any arguments
             */
            return haveAccess == Enum::ALLOW && call_user_func(funcAccess);
        }

        // Check necessary parameters
        if count(parametersForFunction) >= numberOfRequiredParameters {
            return haveAccess == Enum::ALLOW && call_user_func_array(funcAccess, parametersForFunction);
        }

        // We don't have enough parameters
        throw new MissingFunctionParameters(
            "You did not provide all necessary parameters for the " .
            "defined function when checking if '" . roleName . "' can '" .
            access . "' for '" . componentName . "'."
        );
    }

    /**
     * Resolves a component identifier (object or string) to its name
     */
    private function toComponentName(var component)
    {
        if typeof component === "object" {
            if component instanceof ComponentAwareInterface {
                return component->getComponentName();
            }

            if component instanceof ComponentInterface {
                return component->getName();

View on GitHub (pinned to b7419de9cd)

Solutions

  1. Shrink the payload: store the blob in S3/database and enqueue only a reference (URL or ID).
  2. Raise the server limit: restart beanstalkd with -z <bytes> (e.g. beanstalkd -z 262144).
  3. Split oversized batches into multiple smaller jobs.

Example fix

// before
$queue->put(json_encode($report)); // report > 64 KiB -> JOB_TOO_BIG

// after
$uri = $storage->upload('reports/' . $id . '.json', $report);
$queue->put(json_encode(['ref' => $uri])); // enqueue a reference
Defensive patterns

Strategy: validation

Validate before calling

define('BEANSTALKD_MAX_JOB_SIZE', 65535); // raise if server runs with -z

$payload = json_encode($job);
if (strlen($payload) > BEANSTALKD_MAX_JOB_SIZE) {
    $ref = $storage->upload('jobs/' . uniqid() . '.json', $payload);
    $payload = json_encode(['storageRef' => $ref]);
}
$queue->put($payload);

Prevention

When it happens

Trigger: $queue->put($data) where the serialized job body is larger than the server's max job size (default 64 KiB) — e.g. base64-encoded files, large JSON batches, big stack traces.

Common situations: Attaching full payloads (images, PDFs, exports) to jobs instead of references; batch jobs growing over time until they cross 64 KiB; servers started without raising -z.

Related errors


AI-assisted analysis of phalcon/cphalcon@b7419de9cd (2026-08-21). Data as JSON: /api/errors/ce2f17be8815660e. Report an issue: GitHub.