GKE环境下Docker容器中www-data用户启动New Relic PHP Agent权限配置咨询
配置www-data用户启动New Relic PHP Agent的Docker权限方案
你的Dockerfile切换到www用户后,New Relic Agent无法启动的核心原因是:Agent安装后相关文件/目录默认属于root用户,www-data没有读写/执行权限。只需在安装Agent后新增权限配置步骤即可解决,完整配置如下:
完整Dockerfile示例
FROM php:7.4-fpm as test RUN \ curl -L https://download.newrelic.com/php_agent/release/newrelic-php5-10.1.0.313-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* && \ sed -i \ -e 's/"REPLACE_WITH_REAL_KEY"/"My-Key"/' \ -e 's/newrelic.appname = "PHP Application"/newrelic.appname = "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 && \ # 赋予www-data用户New Relic相关资源的权限 chown -R www-data:www-data \ /usr/local/etc/php/conf.d/newrelic.ini \ /usr/local/lib/php/extensions/no-debug-non-zts-20190902/newrelic.so \ /var/log/newrelic \ /var/run/newrelic USER www-data # 后续PHP应用构建步骤 # php app related build. etc....
关键权限说明
需要授权的资源及原因:
/usr/local/etc/php/conf.d/newrelic.ini:Agent配置文件,需www-data可读/usr/local/lib/php/extensions/no-debug-non-zts-20190902/newrelic.so:Agent扩展库,需执行权限/var/log/newrelic:Agent日志目录,需写入权限/var/run/newrelic:Agent守护进程PID文件目录,需读写权限
额外注意事项
- 确认扩展目录路径:不同PHP版本的扩展目录后缀可能不同,可通过
php -i | grep extension_dir命令查询实际路径 - GKE环境适配:若启用了Pod安全策略或安全上下文,需确保www-data用户ID(默认33)被允许运行容器,且目录权限未被强制覆盖
- 验证权限:容器启动后可执行
ls -l检查上述文件/目录的所属用户,确认是否为www-data
内容的提问来源于stack exchange,提问作者Ishan
相关产品推荐
相关产品推荐

