Docker PHP exec() 函数:权限被拒绝
Docker PHP exec() function: permission denied
我正在尝试 运行 PHP 中的 exec() 函数,但我得到了 'Permission denied' 输出。 PHP 作为 Docker 容器安装。我在 Raspberry PI 和我的 Macbook 上都得到了这个。
为了测试,我安装了 LAMP 而没有 Docker,它工作正常,但在 Docker 上却没有。
例如,当我 运行
echo exec('docker --version');
我在浏览器的 PHP 脚本中获取此信息:
sh: 1: docker: Permission denied
我 运行 exec() 函数或 shell_exec() 或 system() 等任何替代函数都无关紧要。在过去的几天里,我一直在尝试一切都没有成功。这一定是 docker 的东西,但我不知道它是什么。
我尝试过的一些事情:
- 更改了我的 .PHP 文件及其所在目录的所有权
- 将权限更改为 777
- 将 www-data 用户添加到 sudoers 文件
- 已将 www 数据添加到 docker 组
您收到的错误表明 exec 正在运行,但是 运行 执行该命令的用户无权访问 docker 二进制文件。
您必须修改 docker 容器内的权限,以允许网络用户 运行 docker 命令。您需要将这些步骤添加到您的 Dockerfile
.
RUN chmod go+x `which docker`
应该允许任何用户在容器内运行执行docker命令,但可能被认为存在安全风险。
请注意,在上面的命令中,我以为您会直接复制并粘贴该命令。包含 which docker
的 which
command will locate the docker executable, and the backticks 将使用 chmod
命令中的输出,因此无需知道 docker 可执行文件的确切位置。
我正在尝试 运行 PHP 中的 exec() 函数,但我得到了 'Permission denied' 输出。 PHP 作为 Docker 容器安装。我在 Raspberry PI 和我的 Macbook 上都得到了这个。
为了测试,我安装了 LAMP 而没有 Docker,它工作正常,但在 Docker 上却没有。
例如,当我 运行
echo exec('docker --version');
我在浏览器的 PHP 脚本中获取此信息:
sh: 1: docker: Permission denied
我 运行 exec() 函数或 shell_exec() 或 system() 等任何替代函数都无关紧要。在过去的几天里,我一直在尝试一切都没有成功。这一定是 docker 的东西,但我不知道它是什么。
我尝试过的一些事情:
- 更改了我的 .PHP 文件及其所在目录的所有权
- 将权限更改为 777
- 将 www-data 用户添加到 sudoers 文件
- 已将 www 数据添加到 docker 组
您收到的错误表明 exec 正在运行,但是 运行 执行该命令的用户无权访问 docker 二进制文件。
您必须修改 docker 容器内的权限,以允许网络用户 运行 docker 命令。您需要将这些步骤添加到您的 Dockerfile
.
RUN chmod go+x `which docker`
应该允许任何用户在容器内运行执行docker命令,但可能被认为存在安全风险。
请注意,在上面的命令中,我以为您会直接复制并粘贴该命令。包含 which docker
的 which
command will locate the docker executable, and the backticks 将使用 chmod
命令中的输出,因此无需知道 docker 可执行文件的确切位置。