CPanel password could not be changed because

From fossu.com

Attempting to change the account password in CPanel or WHM for an user results in the following error message:

The password for ‘user’ could not be changed because:

No “because” explanation is given.

You may also see the following error in /usr/local/cpanel/logs/error_log:

Can't locate Crypt/PasswdMD5/XS.pm in @INC () at /scripts/cPScript/CheckPass/UNIX.pm line 6.
BEGIN failed--compilation aborted at /scripts/cPScript/CheckPass/UNIX.pm line 6.
Compilation failed in require at /scripts/cPScript/CheckPass.pm line 6.
BEGIN failed--compilation aborted at /scripts/cPScript/CheckPass.pm line 6.
Compilation failed in require at /scripts/realchpass line 16.
BEGIN failed--compilation aborted at /scripts/realchpass line 16.

This indicates that the Perl modules CPanel require are either missing or damaged.

This solution has been confirmed on CentOS and Red Hat Enterprise Linux (RHEL).

Solution:
You’ll need to run the following commands as root on the command-line. If you’re not sure how to do so, please see our guide on accessing the root shell prompt.

First, let’s try fixing the problem without rebuilding Perl or changing any system configuration files. Run:

/scripts/checkperlmodules
service cpanel restart

Try changing the password again. If you’re still getting the error, it’s likely the CPanel Perl installation was overwritten by an updated Perl RPM either manually or by yum. CPanel recommends using their Perl installer over the OS Perl packages.

Let’s make sure Perl is left up to CPanel added to the yum exclude list. Run the following command:

grep allowperlupdates /var/cpanel/cpanel.config

If you see allowperlupdates=1 you’ve enabled “Allow Perl updates from RPM-based linux vendors” in WHM under Tweak Settings -> System. Return to WHM and uncheck this option then click the “Save” button.

Open your yum.conf file in a text editor:

nano /etc/yum.conf

Verify that under the [main] section there’s a line that starts with exclude= and contains perl*. For example:

exclude=apache* bind-chroot courier* dovecot* exim* httpd* mod_ssl* mysql* nsd* perl* php* proftpd* pure-ftpd* ruby* spamassassin* squirrelmail*

If the line does not exist, you can either add it manually or run CPanel’s script:

/scripts/checkyum

Next, you’ll need to download the latest Perl installer from CPanel’s layer1 site: http://layer1.cpanel.net/ If you’re not sure how to download the file please see our guide on downloading a file on the command-line in Linux.

Once you have the file downloaded, extract and run the installer:

wget http://layer1.cpanel.net/perl588installer.tar.gz
tar -xzf perl588installer.tar.gz
cd perl588installer
./install

Finally, restart cpanel:

service cpanel restart

You should now be able to change passwords and create accounts that can actually login again.

g33kadmin

I am a g33k, Linux blogger, developer, student and Tech Writer for Liquidweb.com/kb. My passion for all things tech drives my hunt for all the coolz. I often need a vacation after I get back from vacation....

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.