PHP 启动:无法加载动态库(新遗物)


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

我正在使用Nginx和最新的PHP运行Ubuntu 12.04。故事是这样的:我尝试按照 ubuntu 的说明安装新的 relic PHP 代理:

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

而且它不起作用。在一切之后,PHP 代理根本无法启动。我什至快速打开了一个phpinfo.php页面,看看是否列出了newrelic模块,而不是。因此,我用谷歌搜索"新遗物.deb",并看到了这个页面:https://docs.newrelic.com/docs/server/server-monitor-installation-ubuntu-and-debian 并按照说明进行操作。安装全部完成,但代理也不会启动。我喜欢保持我的服务器干净,所以我决定"好吧,因为它不起作用,直到新的遗物支持回到我身边,我可以从头开始,我将删除已安装的新遗物"。因此,我再次按照该链接上的说明进行操作。安装似乎工作正常。但是,如果我执行命令" PHP ",则会出现以下错误:

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

我确保我的/etc/php/fpm/php.ini文件中没有引用newrelic,并仔细检查该文件夹中是否有任何内容。无。

所以我的问题是:如何摆脱错误?如何让 PHP 停止尝试加载该 newrelic.so 模块?是否有任何我可能遗漏的参考?

好的,我找到了答案。我无法描述我是多么感激在下面的帖子中@mike:PHP5中的错误。无法加载动态库。我运行了$ grep -Hrv ";" /etc/php5 | grep -i "extension=",它返回了一大堆文件,其中一个是newrelic.ini老实说,在/etc/php5/cli/conf.d/中,我什至不知道这是一个php目录。所以我运行sudo rm -rf /etc/php5/cli/conf.d/newrelic.ini并重新启动nginx和php5-fpm,问题解决了:)

感谢@WayneWhitty的建议!我还将让newrelic知道他们应该在卸载脚本上修复它。

  1. 确保检查/conf.d 文件夹中的 PHP。如果那里有任何.ini文件,它们将被自动解析。如果您看到与newrelic相关的任何内容,请将其删除。在您的 php info 文件中,如果您想查看启动时自动加载了哪些.ini文件,请搜索Additional .ini files parsed
  2. 重新启动 Nginx。

在 PHP7 CLI 上,删除/etc/php/7.0/cli/conf.d/newrelic.ini

我在尝试为 Docker 安装 New Relic 时收到了同样的错误。我正在尝试为高山码头工人映像安装它并使用默认的 Linux 版本,但您应该改用-musl版本。

根据新遗物论坛的回应:

Alpine linux 有一个不同的 C 编译器,称为 musl,如果使用标准 libc 编译器编译守护进程,则会导致守护进程无法启动。

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

为此,我们在这里为 Alpine Linux 编译了一个单独的安装程序:

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

释放