Adriano C R
Adriano C R

Reputation: 747

PHP Startup: Unable to load dynamic library (NEW RELIC)

I am running Ubuntu 12.04 with Nginx and the latest PHP. The story goes like this: I tried to install the new relic PHP agent per the instructions for ubuntu:

wget -O - http://download.newrelic.com/548C16BF.gpg | sudo apt-key add -

sudo sh -c 'echo "deb http://apt.newrelic.com/debian/ newrelic non-free" 
> /etc/apt /sources.list.d/newrelic.list'

sudo apt-get update
sudo apt-get install newrelic-php5
sudo newrelic-install install

And it doesn't work. After everything the PHP agent simply can't start. I even whipped up a quick phpinfo.php page to see if the newrelic module was listed and it's not. So then I googled "New relic .deb" and came across this page: https://docs.newrelic.com/docs/server/server-monitor-installation-ubuntu-and-debian and followed the instructions. The install all goes through but the agent also doesn't start. I like to keep my servers clean so I decided "OK, since it doesn't work, until new relic support gets back to me and I can start from fresh I will remove the new relic stuff that was installed". So once again I followed the instructions on that link. The install seemed to work normally. However, if I execute the command "PHP" I get the following error:

root@MYHOSTNAME:/home# php
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212
/newrelic.so' - /usr/lib/php5/20121212/newrelic.so: cannot open shared object file:
No such file or directory in Unknown on line 0

I made sure there is no reference to newrelic in my /etc/php/fpm/php.ini file and double checked to see if there was anything in that folder. Nothing.

So my question is: how do I get rid of the error? How do I make PHP stop trying to load that newrelic.so module? Is there any reference to it somewhere that I might be missing?

Upvotes: 13

Views: 17652

Answers (4)

Scofield
Scofield

Reputation: 4745

I received the same kind of error when tried to install New Relic for Docker. I was trying to install it for alpine docker image and used default Linux release, but you should use -musl release instead.

According to this response from newrelic forum:

Alpine linux has a different C compiler called musl that causes the daemon to fail to start if it is compiled with the standard libc compiler.

https://www.musl-libc.org/intro.html 13

For this, we have a separate installer compiled for Alpine linux here:

http://download.newrelic.com/php_agent/release/newrelic-php5-8.6.0.238-linux-musl.tar.gz

Source

Releases

Upvotes: 1

Pablo Martinez
Pablo Martinez

Reputation: 166

On PHP7 CLI, remove /etc/php/7.0/cli/conf.d/newrelic.ini

Upvotes: 2

Adriano C R
Adriano C R

Reputation: 747

Ok, I found the answer. I can't describe how grateful I am to @mike in the following post: Error In PHP5 ..Unable to load dynamic library. I ran $ grep -Hrv ";" /etc/php5 | grep -i "extension=" and it returned a large list of files and one of them was newrelic.ini in /etc/php5/cli/conf.d/ which to be honest with you I wasn't even aware was a php directory. So I ran sudo rm -rf /etc/php5/cli/conf.d/newrelic.ini and restarted nginx and php5-fpm, and problem solved :)

Thanks @WayneWhitty for the suggestions! I am also going to let newrelic know that they should fix that on their uninstall script.

Upvotes: 29

user399666
user399666

Reputation: 19899

  1. Make sure that you check the /conf.d folder for PHP. If there are any .ini files there, they will be automatically parsed. If you see anything relating to newrelic, remove it. In your php info file, search for Additional .ini files parsed if you want to see what .ini files have been automatically loaded on startup.
  2. Restart Nginx.

Upvotes: 5

Related Questions