【问题标题】:docker php8.0-apache new relic - Unable to load dynamic library 'newrelic.so'docker php8.0-apache new relic - 无法加载动态库'newrelic.so'
【发布时间】:2021-10-26 14:35:56
【问题描述】:

我正在尝试使用 php8.0-apache 映像在 docker 中运行新的 relic。

我遵循以下指令:

https://docs.newrelic.com/docs/agents/php-agent/advanced-installation/docker-other-container-environments-install-php-agent/

当我启动容器并看到 PHP 警告时

Warning: PHP Startup: Unable to load dynamic library 'newrelic.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20200930/newrelic.so (/usr/local/lib/php/extensions/no-debug-non-zts-20200930/newrelic.so: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20200930/newrelic.so.so (/usr/local/lib/php/extensions/no-debug-non-zts-20200930/newrelic.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Dockerfile:

FROM php:8.0-apache

RUN curl -L https://download.newrelic.com/php_agent/release/newrelic-php5-9.18.1.303-linux.tar.gz | tar -C /tmp -zx && \   export NR_INSTALL_USE_CP_NOT_LN=1 && \   export NR_INSTALL_SILENT=1 && \   /tmp/newrelic-php5-*/newrelic-install install && \   rm -rf /tmp/newrelic-php5-* /tmp/nrinstall*

RUN sed -i \
      -e 's/"REPLACE_WITH_REAL_KEY"/"COMPANY-KEY"/' \
      -e 's/newrelic.appname = "PHP Application"/newrelic.appname = "company-test"/' \
      -e 's/;newrelic.daemon.app_connect_timeout =.*/newrelic.daemon.app_connect_timeout=15s/' \
      -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \
      /usr/local/etc/php/conf.d/newrelic.ini

感谢您的帮助。

【问题讨论】:

  • 你是如何构建镜像的,然后你是如何启动容器的?请提供docker info

标签: php docker newrelic


【解决方案1】:

RUN curl -L ...行中的\之后应该有newline

FROM php:8.0-apache

RUN curl -L https://download.newrelic.com/php_agent/release/newrelic-php5-9.18.1.303-linux.tar.gz | tar -C /tmp -zx && \
        export NR_INSTALL_USE_CP_NOT_LN=1 && \
        export NR_INSTALL_SILENT=1 && \
        /tmp/newrelic-php5-*/newrelic-install install && \
        rm -rf /tmp/newrelic-php5-* /tmp/nrinstall*

RUN sed -i \
      -e 's/"REPLACE_WITH_REAL_KEY"/"COMPANY-KEY"/' \
      -e 's/newrelic.appname = "PHP Application"/newrelic.appname = "company-test"/' \
      -e 's/;newrelic.daemon.app_connect_timeout =.*/newrelic.daemon.app_connect_timeout=15s/' \
      -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \
      /usr/local/etc/php/conf.d/newrelic.ini

它在我的测试服务器上运行

# docker run -it test/newrelic:latest /bin/sh
root@97b9cd183947:/var/www/html# php -r "phpinfo();"|grep newrelic
/usr/local/etc/php/conf.d/newrelic.ini
newrelic
newrelic.daemon.address => @newrelic
newrelic.daemon.app_connect_timeout => 15s
newrelic.daemon.app_timeout => no value

【讨论】:

  • 我尝试复制粘贴,但我有同样的错误。
  • 试试--no-cache 选项? docker build --no-cache -t yourtag
  • 是的,我试了一下,没有任何变化
【解决方案2】:

检查是否有 newrelic.ini 文件并将其删除。

导航到 /etc/php5/cli/conf.d/ 并删除所有对应的 *.ini 文件。

这应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2019-03-22
    • 2013-11-13
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2010-12-20
    • 2012-01-26
    相关资源
    最近更新 更多