【问题标题】:PHP Startup: Unable to load dynamic library (NEW RELIC)PHP 启动:无法加载动态库 (NEW RELIC)
【发布时间】:2013-11-13 10:34:47
【问题描述】:

我正在运行带有 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 模块,但实际上没有。于是我用谷歌搜索了“New relic .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 模块?有没有我可能遗漏的地方引用它?

【问题讨论】:

  • 你重启nginx了吗?
  • 另外,您是否检查了 /conf.d 文件夹中是否有任何其他 .ini 文件?
  • @WayneWhitty 是的,重新启动了 nginx 和 php。还检查了 conf.d 文件夹,里面没有 newrelic 模块。感谢您的建议。
  • Additional .ini files parsed 在 php 信息中说什么?

标签: ubuntu nginx php newrelic


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

【讨论】:

  • 这里是完整列表:/etc/php5/fpm/conf.d/05-opcache.ini, /etc/php5/fpm/conf.d/10-pdo.ini, /etc/php5/fpm/conf.d/20-apcu.ini, /etc/php5/fpm/conf.d/20-curl.ini, /etc/php5/fpm/conf.d/20-gd.ini, /etc/php5/fpm/conf.d/20-imap.ini, /etc/php5/fpm/conf.d/20-json.ini, /etc/php5/fpm/conf.d/20-mcrypt.ini, /etc/php5/fpm/conf.d/20-memcache.ini, /etc/php5/fpm/conf.d/20-mysql.ini, /etc/php5/fpm/conf.d/20-mysqli.ini, /etc/php5/fpm/conf.d/20-pdo_mysql.ini, /etc/php5/fpm/conf.d/20-readline.ini, /etc/php5/fpm/conf.d/20-xmlrpc.ini
【解决方案2】:

好的,我找到了答案。我无法在以下帖子中描述我对@mike 的感激之情:Error In PHP5 ..Unable to load dynamic library。我运行了$ grep -Hrv ";" /etc/php5 | grep -i "extension=",它返回了大量文件,其中一个是/etc/php5/cli/conf.d/ 中的newrelic.ini,老实说,我什至不知道这是一个php 目录。所以我跑了sudo rm -rf /etc/php5/cli/conf.d/newrelic.ini 并重新启动了nginx和php5-fpm,问题就解决了:)

感谢@WayneWhitty 的建议!我还将让 newrelic 知道他们应该在他们的卸载脚本中解决这个问题。

【讨论】:

  • 就是我说的/conf.d/目录。真的,我不应该做出假设,因为 Nginx 也有一个 conf.d 文件夹。
  • 这很有帮助。 Newrelic 应该在他们的卸载脚本中解决这个问题。
  • newrelic 的卸载很糟糕 - 他们的文档说卸载后重新启动服务器
  • 太好了,在我尝试了很长时间摆脱newrelic的后台服务之后,它帮助了我。对于 CentOS rm -rf /usr/local/lib/php.ini.d/newrelic.ini
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    我在尝试为 Docker 安装 New Relic 时收到了同样的错误。 我试图为 alpine docker 映像安装它并使用默认的 Linux 版本,但您应该改用 -musl 版本。

    根据newrelic论坛的回复:

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

    https://www.musl-libc.org/intro.html13

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

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

    Source

    Releases

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-03
      • 2015-03-01
      • 2021-04-03
      • 2020-03-16
      • 2016-11-27
      • 2021-10-05
      • 2020-02-26
      • 2016-10-09
      相关资源
      最近更新 更多