๐งฉ Issue
How to manage settings with the PHP Selector CLI on a CloudLinux server.
๐งฑ Environment
- OS: CloudLinux OS 6(h), 7(h), 8, 9
- Control Panel: cPanel, Plesk, DirectAdmin, or No Panel
- Tool:
selectorctl
โ CloudLinuxโs PHP Selector CLI tool
๐ง Common PHP Selector CLI Commands
โ Change the PHP Version for All Users
Option 1: Change only for users using the native version:
selectorctl --change-to-version=5.3 --version=native
Option 2: Change PHP version for all users regardless of current version:
cd /var/cpanel/users
ls -1 | awk '{ print "selectorctl --set-user-current=5.3 --user="$1 }' | sh
๐ Reset User Extensions to Default for a Specific PHP Version
Example for PHP 5.6:
selectorctl --list-users --version=5.6 | sed -e 's/,/\n/g' | sed 's/^/selectorctl --reset-user-extensions --version=5.6 --user=/' | sh
๐ก This script:
- Lists users using PHP 5.6
- Resets each user’s extensions to default
- Automatically runs the reset commands
โ๏ธ Enable PHP Extension(s) for All Existing Accounts
Enable apm
extension for all users on PHP 5.6:
selectorctl --enable-user-extensions=apm --version=5.6 --for-all-users
๐ค User-Specific Commands
Get Current PHP Version of a User:
selectorctl --user-current --user=USERNAME
List All Users Using PHP 5.6:
selectorctl --list-users --version=5.6
Change PHP Version for a Specific User:
selectorctl --set-user-current=5.3 --user=USERNAME
Enable Specific Extensions for a User:
selectorctl --enable-user-extensions=pdo,phar --version=5.3 --user=USERNAME
Disable Extensions for a User:
selectorctl --disable-user-extensions=phar --version=5.3 --user=USERNAME
List Extensions for a User:
selectorctl --list-user-extensions --version=5.3 --user=USERNAME
Replace php.ini Options for a User:
selectorctl --replace-options=log_errors:on,display_errors:on --version=5.3 --user=USERNAME
๐ Bulk Commands for All PHP Versions
Enable Extensions for All Installed PHP Versions:
for i in $(selectorctl -S | grep 'e' | awk '{ print $1}' | grep -v 'native'); do
selectorctl --enable-extensions=ext1,ext2 --version=$i
done
Enable Extensions for All Users and All PHP Versions:
for i in $(selectorctl -S | grep 'e' | awk '{ print $1}' | grep -v 'native'); do
selectorctl --enable-user-extensions=ext1,ext2 --version=$i --for-all-users
done
๐ Notes
- Replace
USERNAME
with the actual cPanel/Plesk user. - Replace
ext1,ext2
with the desired extensions (e.g.,pdo,phar,soap
). - The
--for-all-users
flag only works with--enable-user-extensions
or--disable-user-extensions
.