Note: in version 126.96.36.199 of the PHP Agent, a new option for changing the daemon socket was added: newrelic.daemon.address. This document references
newrelic.daemon.port, but if you are on a release >= v188.8.131.52, we recommend using
Why is cPanel different?
cPanel manages all of the server config files including PHP. This can make things confusing if you try to make manual edits to files that are generated by cPanel like the php.ini. This attempts to clarify how cPanel configures PHP and provide some steps to install the agent successfully on cPanel systems.
By default cPanel installs 3 different versions of PHP and numerous handler options for each including DSO (mod_php) and PHP-FPM and can install every supported version of PHP and even more handler options with a few clicks in WHM. Each cPanel user account on the server can be assigned a different PHP version and handler.
The biggest impact to New Relic is cPanel’s Easy Apache. In the past this would completely recompile Apache, PHP, and any selected modules from source each time it ran. This would blow away anything installed outside of Easy Apache including New Relic unless it was included in the template files for Easy Apache. Thankfully, this is no longer the case with Easy Apache 4 which now uses cPanel issued RPMs to install various components. This is much less likely to blow away New Relic installs but similar steps should be followed as with installing other PHP extensions not included in Easy Apache. You may need to use Easy Apache to modify Apache with DSO to a supported configuration
There is currently no out-of-the-box option to install the New Relic PHP Agent via Easy Apache. Below is an example of the many options you get with installing PHP using Easy Apache:
Installing the New Relic Agent
Running the installer will only install the agent for the default PHP install. This can be viewed or modified in WHM:
This setting controls the version of PHP of the
/usr/bin/php. Other versions of PHP installed by Easy Apache will be in directories like
To install the agent for all versions of PHP on a cPanel system you can add the
NR_INSTALL_PATH environment variable before running the installer:
[root@dolores]# export NR_INSTALL_PATH=/opt/cpanel/ea-php*/root/usr/bin/ [root@dolores]# newrelic-install New Relic PHP Agent Installation (interactive mode) =================================================== Enter New Relic license key (or leave blank): Below is a list of the directories in which we found a copy of PHP. Please select the directory or directories for which you wish to install New Relic. You can select either a single directory or multiple directories by separating each choice with either a space or a comma. To select all of the directories shown, please enter the special keyword 'all' (without the quotes). 1) /bin 2) /usr/bin 3) /usr/local/bin 4) /opt/cpanel/ea-php56/root/usr/bin/ 5) /opt/cpanel/ea-php70/root/usr/bin/ 6) /opt/cpanel/ea-php71/root/usr/bin/ 7) /opt/cpanel/ea-php72/root/usr/bin/ 0) Exit Selection (1-7, 0 to exit or all):
Because cPanel systems are most often are on CentOS you will likely also need to use the abstract socket to get around selinux settings. The following command will update all of your PHP installs to use the same abstract socket:
sed -i -e "s/;newrelic.daemon.port =.*/newrelic.daemon.port = "@newrelic-daemon"/" /opt/cpanel/ea-php*/root/etc/php.d/newrelic.ini
Likewise, you can set the default appname for all PHP installs with the following:
sed -i -e ` `"s/newrelic.appname =.*/newrelic.appname = "` `Cpanel App` `"/"` `/opt/cpanel/ea-php*/root/etc/php.d/newrelic.ini
Afterwards, you’ll need to restart services to pick up the changes. Do this via WHM. Apache and FPM should both be restarted as different sites might be using one or the other for PHP:
Per-directory PHP settings
Because cPanel is often used in shared hosting environments you will likely want to set different sites to use different appnames. To prevent your settings from being overwritten by cPanel you should use the MultiPHP INI Editior in your cPanel account (not WHM unless you want system wide settings). This should allow you to modify and set per-directory PHP values in a way that your selected PHP handler supports ie .htaccess for DSO and .user.ini for PHP-FPM. Basic mode won’t contain New Relic settings so you’ll need to use the Editor Mode to add “newrelic.appname”