{"record":{"id":"27489f47b2ff88d4","repo":"yiisoft/yii2","slug":"the-host-property-must-be-specified-for-every-me","errorCode":null,"errorMessage":"The 'host' property must be specified for every memcache server.","messagePattern":"The 'host' property must be specified for every memcache server\\.","errorType":"exception","errorClass":"InvalidConfigException","httpStatus":null,"severity":"error","filePath":"framework/caching/MemCache.php","lineNumber":138,"sourceCode":"\n    /**\n     * Add servers to the server pool of the cache specified.\n     *\n     * @param \\Memcache|\\Memcached $cache\n     * @param MemCacheServer[] $servers\n     * @throws InvalidConfigException\n     */\n    protected function addServers($cache, $servers)\n    {\n        if (empty($servers)) {\n            $servers = [new MemCacheServer([\n                'host' => '127.0.0.1',\n                'port' => 11211,\n            ])];\n        } else {\n            foreach ($servers as $server) {\n                if ($server->host === null) {\n                    throw new InvalidConfigException(\"The 'host' property must be specified for every memcache server.\");\n                }\n            }\n        }\n        if ($this->useMemcached) {\n            $this->addMemcachedServers($cache, $servers);\n        } else {\n            $this->addMemcacheServers($cache, $servers);\n        }\n    }\n\n    /**\n     * Add servers to the server pool of the cache specified\n     * Used for memcached PECL extension.\n     *\n     * @param \\Memcached $cache\n     * @param MemCacheServer[] $servers\n     */\n    protected function addMemcachedServers($cache, $servers)","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/yiisoft/yii2/blob/66f00d18a29b520f85e8e8f1e32d1e7e7b556cac/framework/caching/MemCache.php#L120-L156","documentation":"Thrown by yii\\caching\\MemCache::addServers() when any configured server entry has a null host property. Server entries are hydrated into MemCacheServer objects; when servers is non-empty, every entry must at least specify host (port defaults exist, host does not). If no servers are configured at all, a localhost default is used — the exception is specifically about partially specified server entries.","triggerScenarios":"Configuring 'cache' => ['class' => MemCache::class, 'servers' => [['port' => 11211, 'weight' => 1]]] — host key missing; entry arrays built dynamically where the host assignment is skipped for one node; a config template with a placeholder that never got filled; mixing string server values into the array.","commonSituations":"Copy-pasted multi-node memcached configs with one entry trimmed; environment-specific config where host comes from an env var that is unset in one environment (null passed through); converting an old spyc/yaml config where the host key lost its indentation; provisioning scripts generating server lists conditionally.","solutions":["Add an explicit host to every server entry: ['host' => '10.0.0.5', 'port' => 11211].","When building servers from env vars, default them: 'host' => getenv('MEMCACHE_HOST') ?: '127.0.0.1'.","Remove empty placeholder entries from the servers array entirely — an empty array triggers the sane localhost default instead of throwing."],"exampleFix":"// before\n'cache' => [\n    'class' => \\yii\\caching\\MemCache::class,\n    'servers' => [\n        ['port' => 11211],              // host missing -> throws\n        ['host' => '10.0.0.5', 'port' => 11211],\n    ],\n],\n\n// after\n'cache' => [\n    'class' => \\yii\\caching\\MemCache::class,\n    'servers' => [\n        ['host' => '127.0.0.1', 'port' => 11211],\n        ['host' => '10.0.0.5', 'port' => 11211],\n    ],\n],","handlingStrategy":"validation","validationCode":"foreach ($servers as $i => $server) {\n    if (empty($server['host'])) {\n        $servers[$i]['host'] = getenv('MEMCACHE_HOST') ?: '127.0.0.1';\n    }\n}\n// drop entries that still have no host rather than letting MemCache::addServers() throw\n$config['servers'] = array_values(array_filter($servers, fn($s) => !empty($s['host'])));","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Template every server entry with host + port from the start; host has no default","Default host from an env var at config-build time so unset environments fall back to localhost","Validate the cache config (servers all have host) in a boot-time sanity check per environment"],"tags":["php","yii2","cache","memcache","configuration","servers"],"backgroundTag":"missing-required-config","analyzedSha":"66f00d18a29b520f85e8e8f1e32d1e7e7b556cac","analyzedAt":"2026-08-17T05:17:23.470Z","schemaVersion":2},"datasetVersion":"2026-08-17T09:17:11.063Z"}