[Development Guides Home](/guides)

# Guide to cPanel Variables

## Introduction

The [LiveAPI system](/guides/guide-to-the-liveapi-system) and [dynamicui files](/guides/guide-to-cpanel-plugins/guide-to-cpanel-plugins-add-plugins) can access cPanel's global variables. These variables return data about the server's configuration and the authenticated user.

* These variables are **not** compatible with WHM plugin development. **Only** use them in code for cPanel plugin development.
* The examples below use the following [LiveAPI system](/guides/guide-to-the-liveapi-system) methods:
  * The [`cpanelif()method`](/guides/guide-to-the-liveapi-system/guide-to-the-liveapi-system-liveapi-methods/guide-to-the-liveapi-system-the-cpanelif-method) evaluates a logic operator or cPanel variable as true or false.
  * The [`cpanelprint()method`](/guides/guide-to-the-liveapi-system/guide-to-the-liveapi-system-liveapi-methods/guide-to-the-liveapi-system-the-cpanelprint-method) returns a cPanel variable's value.
  * To check the environment variables for a process, run the following command, where `processname` represents the name of the process:



```bash
ps auxwwe | grep processname
```

## Logic operators

### `!`

**Description:** This logic operator reverses the action of another logic operator.

**Example:** The following code returns true if a does not equal b:


```
<cpanelif !a==b>
```

### `==`

**Description:** This logic operator checks whether the first argument is equal to the second argument.

**Example:** The following code returns true if a equals b:


```
<cpanelif a==b>
```

### `=et=`

**Description:** This logic operator checks whether the first argument is equal to the second argument.

**Example:** The following code returns true if 1 equals 1:


```
<cpanelif 1=et=1>
```

### `=gt=`

**Description:** This logic operator checks whether the first argument is greater than the second argument.

**Example:** The following code returns true if 4 is greater than 3:


```
<cpanelif 4=gt=3>
```

### `=gtet=`

**Description:** This logic operator checks whether the first argument is greater than or equal to the second argument.

**Example:** The following code returns true if 4 is greater than or equal to 3:


```
<cpanelif 4=gtet=3>
```

### `=lt=`

**Description:** This logic operator checks whether the first argument is less than the second argument.

**Example:** The following code returns true if 3 is less than 4:


```
<cpanelif 3=lt=4>
```

### `=ltet=`

**Description:** This logic operator checks whether the first argument is less than or equal to the second argument.

**Example:** The following code returns true if 3 is less than or equal to 4:


```
<cpanelif 3=ltet=4>
```

## cPanel variables

### `$abshomedir`

**Description:** This variable returns the absolute path to the authenticated user's home directory.

If the user's home directory is a symlink, this variable returns the absolute path to the symlink's target.

**Example:** The following code prints the absolute path to the authenticated user's home directory:


```perl
$cpliveapi->cpanelprint('$abshomedir'});
```

### `$appname`

**Description:** This variable returns the current cPanel & WHM application.

For example, this variable returns `cpanel` if you call it from the cPanel interface, or webmail if you call it within a cPanel account's webmail interface.

**Example:** The following code prints the current cPanel & WHM application:


```perl
$cpliveapi->cpanelprint('$appname'});
```

### `$basedir`

**Description:** This variable returns the absolute path to the current directory.

**Example:** The following code prints the current directory's path:


```perl
$cpliveapi->cpanelprint('$basedir'});
```

### `$basefile`

**Description:** This variable returns the absolute path to the current file.

**Example:** The following code prints the current file's location:


```perl
$cpliveapi->cpanelprint('$basefile'});
```

### `$BRANDINGIMG{'KEY'}`

**Description:** This variable returns the string `cpanel_magic_revision_random`, where random is a random integer, and the relative path to the specified image file (`key`).

This path is relative to the `/usr/local/cpanel/base/` directory.

**Example:** The following code prints the relative path to the `email-pass.gif` file:


```perl
$cpliveapi->cpanelprint($BRANDINGIMG{'email-pass.gif'});
```

### `$brandingpkg`

**Description:** This variable returns the user's current branding package.

**Example:** The following code prints the current branding package's name:


```perl
$cpliveapi->cpanelprint('$brandingpkg');
```

### `$CONF{'KEY'}`

**Description:** This variable returns the value for a specific setting (`key`) in the `/var/cpanel/cpanel.config` file.

**Example:** The following code prints the server's mysql-version setting:


```perl
$cpliveapi->cpanelprint($CONF{'mysql-version'});
```

### `$CPDATA{'KEY'}`

**Description:** This variable returns the value for a specific setting (`key`) in the authenticated user's data file.

The system retrieves this information from the hash of settings in the `/var/cpanel/users/username` file, where `username` is the cPanel or WHM account username.

Warning:
We strongly recommend that you use the UAPI [`Variables::get_user_information`](/specifications/cpanel.openapi/account-information/variables-get_user_information) function to return a key's value.

**Example:** The following code prints the user's `CONTACTEMAIL` setting:


```perl
$cpliveapi->cpanelprint($CPDATA{'CONTACTEMAIL'});
```

### $CPERROR{'module'}

**Description:** This variable returns most recent error that the specified module (`module`) returned.

Module names **must** be in lowercase.

**Example:** The following code prints the most recent error for the `email` module:


```perl
$cpliveapi->cpanelprint($CPERROR{'email'});
```

### `$CPVAR{'KEY'}`

**Description:** This variable returns the value of a cPanel variable that you set elsewhere in the same page.

This variable will check any cPanel variables that you set with a `cpanel` function or a `<cpanel setvar>` tag.

**Example:** The following code prints the test variable's most recent value:


```perl
$cpliveapi->cpanelprint($CPVAR{'test'});
```

### `$FORM{'KEY'}`

**Description:** This variable returns the `GET` or `POST` data for a specific variable (`key`) that a user passes to a page as part of a form.

To return the URI-encoded version of the value, use the `$URI_ENCODED_FORM{'KEY'}` variable.

**Example:** The following code prints the test variable's value:


```perl
$cpliveapi->cpanelprint($FORM{'test'});
```

### `$formdump`

**Description:** This variable returns the entire contents of the `$FORM{}` hash, which contains all of the `GET` or `POST` data that a user passes to a page.

Use this variable to debug an interface form.

**Example:** The following code prints the contents of the `$FORM{}` hash:


```perl
$cpliveapi->cpanelprint('$formdump'});
```

### `$hasanonftp`

**Description:** This variable returns a Boolean value that indicates whether anonymous FTP is enabled on the server.

* A value of `1` indicates that anonymous FTP is enabled.
* A value of `0` indicates that anonymous FTP is disabled.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$hasanonftp'});
```

### `$hasdedicatedip`

**Description:** This variable returns a Boolean value that indicates whether the authenticated account has a dedicated IP address.

* A value of `1` indicates that the account has a dedicated IP address.
* A value of `0` indicates that the account does not have a dedicated IP address.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$hasdedicatedip'});
```

### `$hasgem`

**Description:** This variable returns a Boolean value that indicates whether RubyGems are enabled for the authenticated account.

* A value of `1` indicates that RubyGems are enabled.
* A value of `0` indicates that RubyGems are disabled.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$hasgem'});
```

### `$hasmoddeflate`

**Description:** This variable returns a Boolean value that indicates whether the [`mod_deflate` Apache module](http://httpd.apache.org/docs/current/mod/mod_deflate.html) is available on the server.

* A value of `1` indicates that the module is available.
* A value of `0` indicates that the module is not available.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$hasmoddeflate'});
```

### `$hasmodproxy`

**Description:** This variable returns a Boolean value that indicates whether the [`mod_proxy` Apache module](http://httpd.apache.org/docs/current/mod/mod_proxy.html) is available on the server.

* A value of `1` indicates that the module is available.
* A value of `0` indicates that the module is not available.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$hasmodproxy'});
```

### `$haspear`

**Description:** This variable returns a Boolean value that indicates whether PHP PEAR is installed.

* A value of `1` indicates that PHP PEAR is installed.
* A value of `0` indicates that PHP PEAR is not installed.


**Example:**

The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$haspear'});
```

### `$haspostgres`

**Description:** This variable returns a Boolean value that indicates whether PostgreSQL® is installed.

* A value of `1` indicates that PostgreSQL is installed.
* A value of `0` indicates that PostgreSQL is not installed.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$haspostgres'});
```

### `$haspureftp`

**Description:** This variable returns a Boolean value that indicates whether the authenticated account uses the Pure-FTPd FTP server.

* A value of `1` indicates that the account uses Pure-FTPd.
* A value of `0` indicates that the account does not use Pure-FTPd.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$haspureftp'});
```

### `$hasrails`

**Description:** This variable returns a Boolean value that indicates whether Ruby on Rails® is enabled for the authenticated account.

* A value of `1` indicates that Ruby on Rails is enabled.
* A value of `0` indicates that Ruby on Rails is disabled.


Ruby on Rails does **not** function on Amazon Linux servers.

**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$hasrails'});
```

### `$hasvalidshell`

**Description:** This variable returns a Boolean value that indicates whether the authenticated account has shell access.

* A value of `1` indicates that the account has shell access.
* A value of `0` indicates that the account does not have shell access.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$hasvalidshell'});
```

### `$homedir`

**Description:** This variable returns the absolute path to the authenticated user's home directory.

**Example:** The following code prints the authenticated user's home directory path:


```perl
$cpliveapi->cpanelprint('$homedir'});
```

### `$hostname`

**Description:** This variable returns the server's hostname.

**Example:** The following code prints the server's hostname:


```perl
$cpliveapi->cpanelprint('$hostname'});
```

### `$httphost`

**Description:** This variable returns the current HTTP host that connects to the cPanel daemon.

**Example:** The following code prints the current HTTP host:


```perl
$cpliveapi->cpanelprint('$httphost'});
```

### `$ip`

**Description:** This variable returns the authenticated user's primary IP address.

**Example:** The following code prints the authenticated user's primary IP address:


```perl
$cpliveapi->cpanelprint('$ip'});
```

### `$isallowedssl`

**Description:** This variable returns a Boolean value that indicates whether the authenticated user can use cPanel's SSL features.

* A value of `1` indicates that the following conditions are true:
  * The cPanel account has a dedicated IP address.
  * The server administrator has enabled the Allow cPanel users to install SSL hosts if they have a dedicated IP setting in WHM's [*Tweak Settings*](https://docs.cpanel.net/whm/server-configuration/tweak-settings/88/) interface (*WHM >> Home >> Server Configuration >> Tweak Settings*).
* A value of `0` indicates that at least one of these conditions is **not** true and the authenticated user **cannot** use cPanel's SSL features.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$isallowedssl'});
```

### `$isreseller`

**Description:** This variable returns a Boolean value that indicates whether the authenticated user has reseller privileges.

* A value of `1` indicates that the user has reseller privileges.
* A value of `0` indicates that the user does not have reseller privileges.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$isreseller'});
```

### `$isresellerlogin`

**Description:** This variable returns a Boolean value that indicates whether the current session used the root password or a reseller account password to authenticate.

* A value of `1` indicates that the current session authenticated with the root password or a reseller account password.
* A value of `0` indicates that the current session did not authenticate with the root password or a reseller account password.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$isresellerlogin'});
```

### `$isresold`

**Description:** This variable returns a Boolean value that indicates whether the a reseller account owns the authenticated account.

* A value of `1` indicates that a reseller account owns the authenticated account.
* A value of `0` indicates that the root user owns the authenticated account.


**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$isresold'});
```

### `$mailactionhost`

**Description:** This variable returns the mail host's configuration from WHM's [*Tweak Settings*](https://docs.cpanel.net/knowledge-base/cpanel-product/product-versions-and-the-release-process/) interface (`WHM >> Home >> Server Configuration >> Tweak Settings`).

**Example:** The following code prints the server's mail host configuration:


```perl
$cpliveapi->cpanelprint('$mailactionhost'});
```

### `$mainhttpdport`

**Description:** This variable returns the port on which Apache is currently listening. Typically, this is port `80`.

**Example:** The following code prints the port on which Apache is listening:


```perl
$cpliveapi->cpanelprint('$mainhttpdport'});
```

### `$mysqlversion`

**Description:** This variable returns the server's MySQL® version number.

**Example:** The following code prints the server's MySQL version:


```perl
$cpliveapi->cpanelprint('$mysqlversion'});
```

### `$NVDATA{'KEY'}`

**Description:** This variable returns the contents of the specified file (`key`) in a user's `home/.cpanel/nvdata/` directory.

**Example:** The following code prints the contents of the `home/.cpanel/nvdata/test` file:


```perl
$cpliveapi->cpanelprint($NVDATA{'test'});
```

### `$random`

**Description:** This variable generates a random number that is between 1 and 1,000,000.

**Example:** The following code prints a random number:


```perl
$cpliveapi->cpanelprint('$random');
```

### `$sslhttpdport`

**Description:** This variable returns the port on which Apache currently listens for SSL connections. Typically, this is port `443`.

**Example:** The following code prints the SSL port on which Apache is listening:


```perl
$cpliveapi->cpanelprint('$sslhttpdport'});
```

### `$URI_ENCODED_FORM{'KEY'}`

**Description:** This variable returns the `GET` or `POST` data for a specific variable (`key`) that a user passes to a page as part of a form, in a URI-encoded format.

To return the non-URI-encoded version of the value, use the `$FORM{'KEY'}` variable.

**Example:** The following code prints the value that the user passes in for the test variable, in a URI-encoded format:


```perl
$cpliveapi->cpanelprint($URI_ENCODED_FORM{'test'});
```

### `$user`

**Description:** This variable returns the authenticated account's username.

**Example:** The following code prints the authenticated user's username:


```perl
$cpliveapi->cpanelprint('$user'});
```

### `$version`

**Description:** This variable returns the server's current cPanel & WHM version.

**Example:** The following code prints the server's current cPanel & WHM version:


```perl
$cpliveapi->cpanelprint('$version');
```

## Deprecated and removed variables

### `$hasurchin`

**Description:** This variable returns a Boolean value that indicates whether Urchin is installed on the server.

* A value of `1` indicates that Urchin is installed.
* A value of `0` indicates that Urchin is not installed.


Urchin is no longer supported or available for purchase.

**Example:** The following code prints a Boolean value, as described above:


```perl
$cpliveapi->cpanelprint('$hasurchin'});
```

### `$lang`

**Description:** This variable returns the authenticated user's language setting.

This cPanel variable is part of the deprecated lang system. Do not use this system. Instead, use our [Locale System](/guides/guide-to-locales).

**Example:** The following code prints the authenticated user's language setting:


```perl
$cpliveapi->cpanelprint('$lang');
```

### `$LANG{'KEY'}`

**Description:** This variable returns a string in the user's selected language that corresponds to the key value in the `/usr/local/cpanel/locale` file.

**Example:** The following code prints the key's string in the user's locale:


```perl
$cpliveapi->cpanelprint($LANG{'hd'});
```