Ubuntu PHP启动:无法加载动态库(NEW RELIC)

Ubuntu PHP启动:无法加载动态库(NEW RELIC),ubuntu,nginx,php,newrelic,Ubuntu,Nginx,Php,Newrelic,我用Nginx和最新的PHP运行Ubuntu12.04。故事是这样的: 我试图按照ubuntu的说明安装new 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/new

我用Nginx和最新的PHP运行Ubuntu12.04。故事是这样的: 我试图按照ubuntu的说明安装new 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模块是否已列出。于是我在谷歌上搜索“newrelic.deb”,发现了这个页面:并按照说明操作。安装全部完成,但代理也没有启动。我喜欢保持我的服务器干净,所以我决定“好吧,因为它不工作,直到NewRelic支持回到我身边,我可以从新开始,我将删除安装的NewRelic东西”。因此,我再次按照链接上的说明进行操作。安装似乎工作正常。但是,如果执行命令“
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模块?是否有我可能遗漏的地方提到过它?

  • 确保您检查了PHP的/conf.d文件夹。如果有任何.ini文件,它们将被自动解析。如果你看到任何与newrelic有关的东西,请将其移除。如果您想查看启动时自动加载了哪些.ini文件,请在php信息文件中搜索解析的
    其他.ini文件
  • 重新启动Nginx

  • 好的,我找到了答案。我无法在下面的帖子中描述我对@mike的感激之情:。我运行了
    $grep-Hrv”;“/etc/php5|grep-I”extension=“
    ,它返回了一个大的文件列表,其中一个是
    /etc/php5/cli/conf.d/
    中的newrelic.ini,老实说,我甚至不知道它是一个php目录。所以我运行了
    sudorm-rf/etc/php5/cli/conf.d/newrelic.ini
    并重新启动了nginx和php5 fpm,问题解决了:)


    谢谢@WayneWhitty的建议!我还要让newrelic知道,他们应该在卸载脚本中修复这个问题

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

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

    根据newrelic论坛的回应:

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

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


    是否重新启动了nginx?另外,是否检查了/conf.d文件夹中是否有其他.ini文件?@WayneWhitty yep,重新启动了nginx和php。还检查了conf.d文件夹,其中没有newrelic模块。谢谢你的建议。php信息中解析的
    其他.ini文件说明了什么?下面是完整的列表:
    /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-cil.ini,/etc/php5/fpm/fpm/conf.d/20-gd.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-pdo_mysql.ini,/etc/php5/fpm/conf.d/20-mysql.ini,/etc/php5/fpm/conf.d/20-xmlrpc.ini
    这就是我刚才提到的/conf.d/目录。真的,我不应该做假设,因为Nginx还有一个conf.d文件夹。这非常有用。Newrelic应该在他们的卸载脚本上解决这个问题。Newrelic的卸载很糟糕-他们的文档说卸载后重新启动服务器很好,在我尝试了很长时间摆脱Newrelic的后台服务后,这对我很有帮助。对于CentOS
    rm-rf/usr/local/lib/php.ini.d/newrelic.ini