Your data. Anywhere you go.

New Relic for iOS or Android


Download on the App Store    Android App on Google play


New Relic Insights App for iOS


Download on the App Store


Learn more

Close icon

Relic Solution: PHP Agent Not Reporting Web Data

level-up

#1

You’ve just installed the New Relic PHP Agent and you can see the daemon process running and your application shows up as green in your APM dashboard but…there is no data. What’s the problem?

This guide will help you troubleshoot the issue of data not reporting for a new PHP Agent installation. While we can’t cover every possibility the following steps include common issues.

Why does this happen?

Systems can often have multiple versions of PHP installed, sometimes even multiple copies of the same version of PHP! For instance, you might have some applications using PHP 7 while an older application might still be using PHP 5. Our installer attempts to automatically detect where and how these PHP versions are installed and then to apply the correct version of the New Relic PHP extension to each of them. PHP configurations can vary wildly and other factors can cause them to be different than expected.

Often your command line PHP installation will be simply configured and the New Relic installer will have no trouble finding and installing the New Relic extension. So when you type in php -i on the command line the agent starts reporting and your chosen application name appears in the APM dashboard. But the web traffic can run into different PHP configurations as well as permission and security issues your command line doesn’t have.

How do we troubleshoot this?

Because the web server might be using a different PHP installation than the command line, we can’t rely on the output of php -i to give us correct information for troubleshooting the web traffic. So our first step is to create a phpinfo() page, ideally in the same directory as the web application so that it shows us the same PHP settings than the application is using. You can find more details about phpinfo() here:

http://php.net/manual/en/function.phpinfo.php

Scroll down through your phpinfo page and you should see the New Relic extension loaded with all the New Relic settings including your application name as it will appear in APM.

But wait, New Relic isn’t showing up in my phpinfo page!

This means either the installer didn’t find your web server’s PHP or some configuration issue is causing it to not load. The Additional .ini files parsed section should have the newrelic.ini listed. This contains all the New Relic settings as well as the line to load the New Relic extension. If this .ini file isn’t listed then the this PHP installation doesn’t have New Relic installed. In this case you should run the installer again and select the correct PHP installation when prompted.

If the newrelic.ini is being loaded then PHP is being told to load the New Relic extension but isn’t for some reason. This will depend on the extension_dir which will be listed in your phpinfo page as well. The newrelic.so needs to be present in this extension directory. If it is not present, we’ll need to manually copy the correct version of the newrelic.so to this directory. If it is present there is likely an error in the PHP “error_log” detailing why it cannot load the newrelic.so. The error log might also be different than expected so check your phpinfo page for the location used by your web server.

Manually installing the New Relic extension

Even if it is present in the correct PHP extension directory, the errors might indicate it is compiled for a different version of PHP or some other error that requires you to replace it. First, download the installer for your OS here:

http://download.newrelic.com/php_agent/release/

This contains all the versions of the New Relic PHP extension. To find what version is required for your PHP installation, check back on the phpinfo page for the PHP Extension build number. For instance, the PHP 5.4 extension build is 20100525. Also check if Thread Safety is enabled.

With the extension build number and the thread safety known, find the correct newrelic.so for your version and OS architecture in the installer directory under the “agent” directory, agent/xXX/newrelic-XXXXXXXX-x.so. For instance, if you have a 64bit machine with PHP 5.4 and Thread Safety enabled, the correct file would be agent/x64/newrelic-20100525-zts.so Copy the correct file to your extension directory and name the file newrelic.so. Restart your PHP handler to pick up the change and attempt to load the new extension.

The New Relic PHP extension is loaded and appears in my phpinfo page but still no data!

If the New Relic PHP extension is showing up in your phpinfo page and the application name is correct then the issue is usually with the agent communicating to the daemon process. This is a bit more complicated than the command line due to security settings on web servers so often the application will appear in APM from command line PHP calls but the web server traffic will not be reported.

In this case, check the New Relic agent logs located by default in /var/log/newrelic/php_agent.log. If data is not reporting generally you will see a daemon connect error such as the following example:

2017-11-21 11:56:14.596 -0800 (11576 11576) warning: daemon connect(fd=5 uds=/tmp/.newrelic.sock) returned -1 errno=ECONNREFUSED. Failed to connect to the newrelic-daemon.

In this case, the daemon is using the default socket file, /tmp/.newrelic.sock. On some systems the web server is not allowed to connect to sockets by default due to security settings. Without making security changes to allow it, on Linux systems you have the option of using an abstract socket which gets around filesystem permissions. To do this, edit your newrelic.ini and change the following:

;newrelic.daemon.port = "/tmp/.newrelic.sock"

To this:

newrelic.daemon.port = "@newrelic-daemon"

After making the change, kill any newreelic-daemon processes that are running and restart the PHP handler to pick up the change. More details on port options can be found here:

https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-configuration#inivar-daemon-port

If you’re having trouble getting your agent to report data, you may want to try to New Relic Diagnostics tool. For our PHP Agent, it will double check if the daemon is running properly. We’ll be adding more checks to it as time goes on!

To use New Relic Diagnostics for this Support ticket, please download a copy. Here are more details on downloading and running this diagnostics tool.


Web transactions are not reported / php-agent
PHP Agent: Cannot see data
Newrelic agent daemon is working but unable to see on dashboard
New Relic - how to get rid of
Not see data in New Relic data
No access to configuration file path
Centos 7 PHP 7.2 no data
Only non-web transaction data is being recorded
PHP Agent works as DSO not as PHP-FPM
Unable to see data in the Web Transactions time
Update php 5.4 to php 7.2 and now it does not work newrelic apm PHP
Loaded in CLI not FPM