Возможно, вы используете memcached без поддержки протокола ASCII, например, если вы запустили:
$ memcached -B двоичный файл
Если это так, полностью удалите аргумент -B, и PHP и telnet должны работать.
Также возможно, что ваш memcached был скомпилирован с включенной поддержкой SASL, что отключило протокол ASCII, который требуется PHP для подключения к memcached.
Это объясняет, почему он работает, но вы не можете вводить команды ASCII через telnet (или PHP).
Вы можете проверить это, запустив:
$ memcached -S
Вы должны увидеть этот вывод, если memcached не был скомпилирован с SASL:
«Этот сервер не построен с поддержкой SASL.»