Giter Club home page Giter Club logo

apache-authmemcookie-module's Introduction

Build Status CircleCI License: GPL v3

What is "Auth MemCookie"?

Auth MemCookie is an Apache v2 Authentication and authorization modules are based on cookie Authentication mechanism.

The module doesn’t make Authentication by it self, but verify if Authentication the cookie is valid for each url protected by the module. The module validate also if the authenticated user have authorization to access url.

Authentication is made externally by an Authentication html form page and all Authentication information necessary to the module a stored in memcached identified by the cookie value Authentication session id by this login page.

How it Works

Phase 1 : The login Form

Authentication is made by a login form page.

This login page must authenticate the user with any authenticate source (ldap, /etc/password, file, database....) accessible to language of the page (php, perl, java... an ldap login page sample in php are in samples directory).

Then this page must set cookie that contains only a key the Authentication unique id of the Authentication session.

The login page must store authorization and user information of the authenticated user in memcached identified by the cookie key Authentication unique id.

The login page can be developed in any language you want, but must be capable to use memcached (they must have memcache client api for us)

Phase 2 : The Apache v2 Module

After the user is logged, the Auth MemCookie module check on each protected page by apache ACL is the user is authenticated.

When authenticating a request Auth MemCookie module walks through the following steps:

  1. Get the session id. The session id is stored in a cookie (by default named AuthMemCookie).

  2. Get the session data. Auth MemCookie module fetches session data by looking up the session id on the memcached server.

  3. Verify the remote ip. Auth MemCookie module checks the ip address stored in the session data against the ip address of the current request. This step is optional, and can be disabled by setting the Auth_memCookie_MatchIP option to no.

  4. Get username and groups from session data. The username is stored in the UserName field in the session data and the groups the user is a member of is stored in the Groups field.

  5. Check username and groups against Require configuration directives.

If any of the steps 1-4 fails, then Auth MemCookie will return a HTTP_UNAUTHORIZED (401) Authorization Required error. A HTTP_FORBIDDEN (403) Forbidden error will be returned if the last step fails.

When a user is successfully authenticated, Auth MemCookie will store all the fields from the session data in environment variables accessible to the web page. Every field of the session data will be send http header MCAC_<field-name> to the value of the field.

"Session data" format stored in memcached

The session data stored in memcached are composed with multiple line in form of name equal value ended by \r\n. some are mandatory, other are optional and the rest are information only (all this field are transmitted to the script language protect the module).

Session data format:

UserName=<user name>\r\n
Groups=<group name1>:<group name2>:...\r\n
RemoteIP=<remote ip>\r\n
Password=<password>\r\n
Expiration=<expiration time>\r\n
Email=<email>\r\n
Name=<name>\r\n
GivenName=<given name>\r\n
  • Username: are mandatory.
  • Groups: are mandatory, are used to check group in apache acl. if no group are know for the user, must be blank (Groups=\r\n)
  • RemoteIP: are mandatory, used by remote ip check function in apache module.
  • Password: are not mandatory, and is not recommended to store in memcached for security reson, but if stored, is sent to the script language protected by the module.
  • The other fields are information only, but they are sent to the langage that are behind the module (via environement variable or http header).

The session field size is for the moment limited to 10 fields by default.

Build dependency

You must have compiled and installed:

Compilation

# autoconf -f
# ./configure --with-apxs=/path/to/apache/httpd/bin/apxs --with-libmemcached=/path/to/libmemcached_install_dir/
# make
# make install
  • where --with-libmemcached is the installation directory of libmemcached (require v1.0+) library.

    Generaly with libmemcached os package you need simply to specify --with-libmemcached=/usr. They require generaly to install libmemcached developper package.

    • debian version wheezy, jessie, stretch, buster, sid have v1.0 packaged.
    • centos/rhel you need v7 to have libmemcached v1.0 packaged
    • fedora v25+ have v1.0 packaged
    • ubuntu trusty, xenial, yakkety, zesty, artful have v1.0 packaged.
  • where --with-apxs= is the path of apache apxs2 build script (require apache v2.0+).

    Generaly with apache httpd os package you simply need to specify --with-apxs=/usr/bin/apxs or --with-apxs=/usr/sbin/apxs (the default path depend on the distribution, you can find it with type apxs shell command). They require generaly to install apache developper package.

After that the mod_auth_memcookie.so is generated in apache modules installation directory.

How to configure Apache Module

Module configuration option:

This option can be used in location or directory apache context.

  • Auth_memCookie_Memcached_Configuration

    This configuration directive permit to configure libmemcached initialisation. The syntax of this directive value are defined her: http://docs.libmemcached.org/libmemcached_configuration.html

    With that directive you can specify a liste of ip or host adresse(s) and port : separed of memcache(s) daemon to be used.

    For exemple:

    Auth_memCookie_Memcached_Configuration "--SERVER=host10.example.com:port1 --SERVER=host11.example.com:port2 --SERVER=host10.example.com:port3"
    

    To use consistant distribution of hash on multiple memcached server add --DISTRIBUTION=consistent and for replication --NUMBER-OF-REPLICAS=2. But your login page must use the same algorithm than libmemcached library that by default use the ketama distribution algorithm with md5 hash.

    For example with php you can use PECL Memcached extension that are also based on libmemcached library that support the same consistant distribution algorithm before add server list.

    Sample:

      $memcached=new Memcached();
      $memcached->setOption( Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT); 
  • Auth_memCookie_Memcached_SessionObject_ExpireTime

    Session object stored in memcached expiry time, in secondes.

    Used only if Auth_memCookie_Memcached_SessionObject_ExpiryReset is set to on.

    Set to 3600 seconds by default.

  • Auth_memCookie_Memcached_SessionObject_ExpiryReset

    Set to off to not reset object expiry time in memcache on each url, is set to on by default.

    By default on each request authenticated by the module, the object expiry in memcached of the session data are reset to make expiry base on inactivity, if set to off the expiry are based on session time length.

  • Auth_memCookie_SessionTableSize

    Max number of element in session information table, is set to 10 by default.

  • Auth_memCookie_SetSessionHTTPHeader

    Set to on to set session information to http header of the authenticated users, is set to off by default. Each session field are sended to backend. Each session field name are prefixed by Auth_memCookie_SetSessionHTTPHeaderPrefix changed to uppercase.

  • Auth_memCookie_SetSessionHTTPHeaderEncode

    Set to on to mime64 encode session information to http header, is set to off by default.

  • Auth_memCookie_SetSessionHTTPHeaderPrefix

    Set HTTP header prefix, is set to MCAC_ by default.

  • Auth_memCookie_CookieName

    Name of the cookie to used for check authentification, is set to AuthMemCookie by default.

  • Auth_memCookie_MatchIP_Mode

    To check cookie ip adresse, Set to 1 to use X-Forwarded-For http header, to 2 to use Via http header, and to 3 to use apache remote_ip, is set to 0 by default to desactivate the ip check.

  • Auth_memCookie_GroupAuthoritative (only on apache <2.4)

    Set to off to allow access control to be passed along to lower modules, for group acl check, is set to on by default.

  • Auth_memCookie_Authoritative

    Set to off to allow access control to be passed along to lower modules, is set to on by default.

  • Auth_memCookie_SilmulateAuthBasic

    Set to off to not fix http header and auth_type for simulating auth basic for scripting language like php authentication framework work, is set to on by default.

    with this option this $_SERVER variable are normaly set on php:

      AUTH_TYPE = "basic"
      PHP_AUTH_USER = "user"
      PHP_AUTH_PW = "password"
    
  • Auth_memCookie_DisableNoStore

    Set to on to stop the sending of a Cache-Control header set to no-store with the login screen. This allows the browser to cache the credentials, but at the risk of it being possible for the login form to be resubmitted and revealed to the backend server through XSS. Use at own risk.

  • Auth_memCookie_SASLAuth

    Set to on to enable SASL authentication. If this is set, Auth_memCookie_SASLUsername and Auth_memcookie_SASLPassword should also be set. Defaults to off.

  • Auth_memCookie_SASLUsername

    Username to use when authenticating to memcached if Auth_memCookie_SASLAuth is on. Defaults to user.

  • Auth_memCookie_SASLPassword

    Password to use when authenticating to memcached if Auth_memCookie_SASLAuth is on. Defaults to pass.

On the backend application

The application recieve this information:

  • REMOTE_USER are set to the user logged name
  • AUTHMEMCOOKIE_PREFIX are set to value of Auth_memCookie_SetSessionHTTPHeaderPrefix
  • AUTHMEMCOOKIE_AUTH are set to yes when protected, no when in public zone.

And all session field (prefixed by Auth_memCookie_SetSessionHTTPHeaderPrefix/AUTHMEMCOOKIE_PREFIX) if Auth_memCookie_SetSessionHTTPHeader is on.

And if Auth_memCookie_SilmulateAuthBasic is set, they recieve also this $_SERVER variable :

  AUTH_TYPE = "basic"
  PHP_AUTH_USER = "user"
  PHP_AUTH_PW = "password"

Apache 2.3/2.4 authn/authz model

The module add some Require/authz provider:

  • Require mcac-group

    To limit access to groups specified in session (groups session field) by the login script. Use the same syntax than Require group. But Require group on apache 2.3/2.4 work only with mod_authz_groupfile.

    They also support multiple groups like that:

    Require mcac-group group1 group2 group3
    

    If one match on group of the groups session field they are granted.

  • Require mcac-public

    They make possible to specify public access zone.

    In that zone authenticated or not are granted but authenticated can send session information to backend depend on Auth_memCookie_SetSessionHTTPHeader flag.

    <Location /publiczone>
      Require mcac-public
    </Location>
    
  • Require valid-user and Require user

    All the two a provided by mod_authz_user core apache module.

Sample to configure Apache v2.4 Module:

Configuration sample for using Auth_memcookie apache V2.4 module:

LoadModule mod_auth_memcookie_module modules/mod_auth_memcookie.so

<IfModule mod_auth_memcookie.c>
<Location />
    Auth_memCookie_CookieName myauthcookie
    Auth_memCookie_Memcached_Configuration --SERVER=127.0.0.1:11000

    # to redirect unauthorized user to the login page
    ErrorDocument 401 "/gestionuser/login.php"

    # to specify if the module are autoritative in this directory
    Auth_memCookie_Authoritative on
    # must be set without that the refuse authentification
    AuthType Cookie
    # must be set (apache mandatory) but not used by the module
    AuthName "My Login"
    require mcac-public
</Location>

</IfModule>

# to protect juste user authentification
<Location "/myprotectedurl">
    require valid-user
</Location>

# to protect acces to user in group1
<Location "/myprotectedurlgroup1">
    require mcac-group group1
</Location>

Apache 2.0/2.2 authn/authz model

  • Require group groupname [groupname]...

    Only users with the specified groups can access the resource.

  • Require valid-user

    Any valid user can access the resource.

  • Require user user_id [user_id]...

    Only specified users can access the resource.

    all this directive are from mod_auth_basic module.

Sample to configure Apache v2.0 Module:

Configuration sample for using Auth_memcookie apache V2.0 module:

LoadModule mod_auth_memcookie_module modules/mod_auth_memcookie.so

<IfModule mod_auth_memcookie.c>
<Location />
    Auth_memCookie_CookieName myauthcookie
    Auth_memCookie_Memcached_Configuration --SERVER=127.0.0.1:11000

    # to redirect unauthorized user to the login page
    ErrorDocument 401 "/gestionuser/login.php"

    # to specify if the module are autoritative in this directory
    Auth_memCookie_Authoritative on
    # must be set without that the refuse authentification
    AuthType Cookie
    # must be set (apache mandatory) but not used by the module
    AuthName "My Login"
</Location>

</IfModule>

# to protect juste user authentification
<Location "/myprotectedurl">
    require valid-user
</Location>

# to protect acces to user in group1
<Location "/myprotectedurlgroup1">
    require group group1
</Location>

Releases notes

News in v2.0

  • Full support for apache 2.3/2.4 authz/authn model support
  • Fix HTTP header not sending to backend
  • Add support for setting prefix HTTP header other than "MCAC_"
  • Add public zone support (Require mcac-public only in apache 2.3/2.4)
  • HTTP header name sended to backend in uppercase

News in v1.2

News in v1.1.1

  • Correct handling of "=" in value of the memcache session (E. Dumas).
  • Don't breaks basic authentication (Steve Gaarder)
  • Multi users/groups require support
  • Fix memory leak when mc_aget2 return NULL
  • Apache 2.4 partial support (no use the new security model)
  • Fix somme portability issue (apr_strtok in place of strtok, and variable definition in front of function)

apache-authmemcookie-module's People

Contributors

einfallstoll avatar mcarbonneaux avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

apache-authmemcookie-module's Issues

Unable to install on Ubuntu 14.04 & Apache 2.4

I have been trying to install this module on Apache 2.4 in Ubuntu 14.04. Here are the steps I followed.

$ sudo apt-get update && apt-get install -y apache2-dev memcached libmemcached-dev autoconf

$ autoconf -f
$ ./configure --with-apxs=/usr/bin/apxs --with-libmemcached=/usr/local
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for libmemcached library... found!
checking for Apache apxs script... found!
configure: creating ./config.status
config.status: creating Makefile
$ make
/usr/bin/apxs -lmemcached -L/usr/local/lib -I/usr/local/include -c mod_auth_memcookie.c
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static x86_64-linux-gnu-gcc -std=gnu99 -prefer-pic -pipe -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security  -D_FORTIFY_SOURCE=2   -DLINUX -D_REENTRANT -D_GNU_SOURCE  -pthread  -I/usr/include/apache2  -I/usr/include/apr-1.0   -I/usr/include/apr-1.0 -I/usr/include -I/usr/local/include  -c -o mod_auth_memcookie.lo mod_auth_memcookie.c && touch mod_auth_memcookie.slo
/usr/share/apr-1.0/build/libtool --silent --mode=link --tag=disable-static x86_64-linux-gnu-gcc -std=gnu99 -Wl,--as-needed -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now    -o mod_auth_memcookie.la  -L/usr/local/lib -lmemcached -rpath /usr/lib/apache2/modules -module -avoid-version    mod_auth_memcookie.lo
$ make install
/usr/bin/apxs -i -n mod_auth_memcookie mod_auth_memcookie.la
/usr/share/apache2/build/instdso.sh SH_LIBTOOL='/usr/share/apr-1.0/build/libtool' mod_auth_memcookie.la /usr/lib/apache2/modules
/usr/share/apr-1.0/build/libtool --mode=install install mod_auth_memcookie.la /usr/lib/apache2/modules/
libtool: install: install .libs/mod_auth_memcookie.so /usr/lib/apache2/modules/mod_auth_memcookie.so
libtool: install: install .libs/mod_auth_memcookie.lai /usr/lib/apache2/modules/mod_auth_memcookie.la
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/lib/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/lib/apache2/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 644 /usr/lib/apache2/modules/mod_auth_memcookie.so
Enabling module auth_memcookie.
To activate the new configuration, you need to run:
  service apache2 restart
$ apache2ctl configtest
apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 2 of /etc/apache2/mods-enabled/auth_memcookie.load: Cannot load /usr/lib/apache2/modules/mod_auth_memcookie.so into server: /usr/lib/apache2/modules/mod_auth_memcookie.so: undefined symbol: memcached_destroy_sasl_auth_data
Action 'configtest' failed.
The Apache error log may have more information.

Any suggestions?

P.S. I was able to follow the same steps as above and get it working on Ubuntu 16.04.

FreeBSD compilation warnings

Hello,

I get these warnings compiling the module under FreeBSD 10.2 / Apache 2.4.16_1.

# make
/usr/local/sbin/apxs -lmemcache -L/usr/local/lib/  -c mod_auth_memcookie.c
/usr/local/share/apr/build-1/libtool --silent --mode=compile cc -prefer-pic -O2 -pipe -I/usr/include -DLIBICONV_PLUG -fstack-protector -fno-strict-aliasing    -I/usr/local/include/apache24  -I/usr/local/include/apr-1   -I/usr/local/include/apr-1 -I/usr/include -I/usr/local/include -I/usr/local/include/db5  -c -o mod_auth_memcookie.lo mod_auth_memcookie.c && touch mod_auth_memcookie.slo
mod_auth_memcookie.c:266:54: warning: missing sentinel in function call [-Wsentinel]
    szMyGroups=apr_pstrcat(r->pool,":",szGroups,":",0);
                                                     ^
                                                     , NULL
/usr/local/include/apr-1/apr_strings.h:147:28: note: function has been explicitly marked sentinel here
APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *p, ...)
                           ^
mod_auth_memcookie.c:267:52: warning: missing sentinel in function call [-Wsentinel]
    szMyGroup=apr_pstrcat(r->pool,":",szGroup,":",0);
                                                   ^
                                                   , NULL
/usr/local/include/apr-1/apr_strings.h:147:28: note: function has been explicitly marked sentinel here
APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *p, ...)
                           ^
2 warnings generated.
/usr/local/share/apr/build-1/libtool --silent --mode=link cc -L/usr/lib -fstack-protector   -o mod_auth_memcookie.la  -L/usr/local/lib/ -lmemcache -rpath /usr/local/libexec/apache24 -module -avoid-version    mod_auth_memcookie.lo

Could they be corrected ?

Thank you !

Ben

Incorrect group verification

The function get_Auth_memCookie_grp returns incorrect result if the required group appears as a substring of another group.

groups for a user = group10:group2:group1:group3
required group = group1

A suggestion to fix this :

static int get_Auth_memCookie_grp(request_rec *r, char *szGroup, char *szGroups)
 {
    char *szMyGroups;
    char *szMyGroup;

    /* Add delimiters at start and end of groups string */
    /* and search group with delimiters */
    szMyGroups=apr_pstrcat(r->pool,":",szGroups,":",0);
    szMyGroup=apr_pstrcat(r->pool,":",szGroup,":",0);

    if (!strstr(szMyGroups,szMyGroup))
        return DECLINED;

    ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, 0, r, ERRTAG "group found=%s", szGroup);
    return OK;
}

Issue with simplesamlsphp session storage

It looks as if simplesamlphp is storing the session in memcached as .session. and not just , but authmemcookie is only searching for in memcached. Is there a way to define a prefix to have the module search with a prefix to the session ID? Or did I miss something that I should have changed in simplesamlphp? Thanks!

Allow setting server variables separately from HTTP headers

I have an setup with Apache running as a reverse proxy, sending various user information as HTTP headers. To make things interesting, some sites require different headers than others, so the Apache RequestHeader directive is used to map only the required information to the needed header name.

To allow this to work better, and not pollute the back-end request with all session data in headers that will never be used, the the subprocess_env and headers_in handling need separated.

Replaying POST Requests

One question.

Does this module support "Replaying POST Requests" when user isn't logged in?

RemoteIP check is not executed on every access

When the RemoteIp changes after user has authenticated, authMemcookie does not prevent user from accessing URLs.

This behaviour seems to happen only on apache 2.4.

I've narred down the issue to the hook definition

Apparently, according to apache dev doc, this hook only executes if the configuration is different from the first access, but I couldn't make it work, even using different locations, one for authentication and another one with the "requires".

Issues finding libmemache library on RHEL 7 preventing install

I'm having issues getting authmemcookie going on RHEL 7. When i run

./configure --with-apxs=/usr/bin/apxs --with-libmemcached=/usr/

when it checks for the libmemcached library, it can't find it.

[root@ctstageextweb2 Apache-Authmemcookie-Module-master]# locate libmemcached /usr/bin/Apache-Authmemcookie-Module-master/m4/ax_libmemcached.m4 /usr/lib64/libmemcached-1.0.18 /usr/lib64/libmemcached-1.0.18.tar.gz /usr/share/doc/man-pages-overrides-7.9.0/libmemcached /usr/share/doc/man-pages-overrides-7.9.0/libmemcached/COPYING

I've tried /usr/lib64/ as well for the directory but I'm not sure why it's not finding it. I installed 'libmemcached.x86_64 : Client library and command line tools for memcached server' using yum install libmemcached. Is this the correct way to add it to a RHEL 7 machine, or is something else amiss?

Thank you.

REMOTE_USER not available to mod_rewrite

Hello,

I just noticed that REMOTE_USER is not available to mod_rewrite.
%{REMOTE_USER} is empty when used in RewriteCond / RewriteRule.
Even %{LA-U:REMOTE_USER} is empty.

Thank you !

Ben

group authentication not working

Hello,

Thanks for writing this apache module - hopefully this will allow us to use simplesamlphp as an SP for our mod_wsgi python webapps! I have authentication working ok, but am struggling with authorization.

Just trying to get group authentication working. Here is my config:
<Location /ssp>
Auth_memCookie_SessionTableSize "40"
Auth_memCookie_Authoritative on
Auth_memCookie_GroupAuthoritative on
Require valid-user
Require group blah

When starting up apache, I see the following error message:
Nov 12 10:23:23 webapps-dr apache2[20440]: * The apache2 configtest failed.
Nov 12 10:23:23 webapps-dr apache2[20440]: Output of config test was:
Nov 12 10:23:23 webapps-dr apache2[20440]: AH00526: Syntax error on line 49 of /etc/apache2/conf-enabled/auth_memcookie.conf:
Nov 12 10:23:23 webapps-dr apache2[20440]: Unknown Authz provider: group
Nov 12 10:23:23 webapps-dr apache2[20440]: Action 'configtest' failed.

I am running apache2 version 2.4.10-9ubuntu1.1 on Ubuntu 15.04 (vivid) with patched (inline bug) version of libmemcache 1.4.0rc2.

Any thoughts?

Apache 2.4 partial support ?

Hello,

In the changelog you talk about Apache 2.4 partial support.
Is there still something missing to have a full / clean support of Apache 2.4 ?

Thank you very much !

Ben

Session data, improve documentation

Hi
Two questions:
In the Session data, which is the format of the Expiration field?
Of the "not mandatory" fields, which ones does your module use?

Best regards, Sala

Can't configure

Hey

I tried to install this module, but I can't seem to configure it in Linux.

I've installed libevent-2.1.8, memcached-1.4.36 and libmemcached-1.0.18

And then when I run ...
./configure --with-libmemcached=/usr/local/include/libmemcached/

... I get this

checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for libmemcached library... configure: error: /usr/local/include/libmemcached/ not found.

When i check its contents ...
ls -la /usr/local/include/libmemcached/

... I get this

total 20
drwxr-xr-x 2 root root 4096 may 4 15:37 .
drwxr-xr-x 8 root root 4096 may 4 15:37 ..
-rw-r--r-- 1 root root 1713 may 4 15:37 memcached.h
-rw-r--r-- 1 root root 1717 may 4 15:37 memcached.hpp
-rw-r--r-- 1 root root 1714 may 4 15:37 util.h

I've tried with /usr as the configure path, and some other paths, but it can't seem to find it.

Thanks for any support

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.