执行PHP代码时找不到HOME环境变量:shell_exec('env');

问题描述

我设置了 docker 容器以使用 PHP7.3 和 apache。

docker-compose.yml 文件

version: '3.3'
services:
  web:
    image: PHP:7.3-apache
    container_name: PHP73
    volumes:
      - ./PHP:/var/www/html/
    ports:
      - 8000:80

PHP7.3-apache 是官方的 docker 镜像,

在 index.PHP 中:

echo '<pre>';
echo shell_exec('env');
echo '</pre>';

这是输出

PHP_EXTRA_CONfigURE_ARGS=--with-apxs2 --disable-cgi
APACHE_confdIR=/etc/apache2
HOSTNAME=651d99357835
PHP_INI_DIR=/usr/local/etc/PHP
SHLVL=0
PHP_EXTRA_BUILD_DEPS=apache2-dev
PHP_LDFLAGS=-Wl,-O1 -pie
APACHE_RUN_DIR=/var/run/apache2
PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
PHP_VERSION=7.3.25
APACHE_PID_FILE=/var/run/apache2/apache2.pid
PHP_ASC_URL=https://www.PHP.net/distributions/PHP-7.3.25.tar.xz.asc
PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
PHP_URL=https://www.PHP.net/distributions/PHP-7.3.25.tar.xz
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
APACHE_LOCK_DIR=/var/lock/apache2
LANG=C
APACHE_RUN_GROUP=www-data
APACHE_RUN_USER=www-data
APACHE_LOG_DIR=/var/log/apache2
PWD=/var/www/html
PHPIZE_DEPS=autoconf        dpkg-dev        file        g++         gcc         libc-dev        make        pkg-config      re2c
APACHE_ENVVARS=/etc/apache2/envvars

我很好奇为什么这个输出中没有 HOME 变量。

echo shell_exec('whoami'); 输出 www-data

如果我使用 www-data 用户在 docker 容器中运行 shell:

docker exec -it --user www-data 651d99357835 /bin/bash

后执行env,设置HOME变量:

HOME=/var/www 以及其他变量。

我们使用 unoconv 使用 PHP shell_exec() 执行文件转换。但是运行 unoconv 的用户必须对其 HOME 目录具有写权限,并且必须设置 HOME

是否可以将其升级.bashrc 文件

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)