Based on Users are having problems changing passwords

If users are having problems changing passwords, one thing to check is that the PhP crypt() function is using DES and not MD5.

It turns out that if MD5 is available while PhP is being installed, then crypt() will use MD5. This will cause problems because in the user db, the profiles table has a cryptpassword field that was generating using DES. Thus, if PhP is upgraded and starts returning MD5, then users will not be able to log in.

The way to check this is to use phpMyAdmin and look in the user db at the profile table. The cryptpassword fields should look like

FWKB/tafHGgPc
If they have a lead $1
$1$$2eO1/WkTvNyuDcyh 
then the crypt() method is using MD5.

It turns out that this is a problem because the cryptpassword field is limited to 20 chars but the MD5 version returns more than 20 chars

The fix is to reinstall PhP by running configure, then editing main/php_config.h and changing

#define PHP_MD5_CRYPT 1

to
#define PHP_MD5_CRYPT 0
and then reinstalling.

Note that users with MD5 style cryptpassword entries will need to get new passwords.

See also Password Problem with Java Pages.