问题描述
我设置了 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
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)