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 的东西,但我不知道它是什么。

我尝试过的一些事情:

您收到的错误表明 exec 正在运行,但是 运行 执行该命令的用户无权访问 docker 二进制文件。

您必须修改 docker 容器内的权限,以允许网络用户 运行 docker 命令。您需要将这些步骤添加到您的 Dockerfile.

RUN chmod go+x `which docker`

应该允许任何用户在容器内运行执行docker命令,但可能被认为存在安全风险。


请注意,在上面的命令中,我以为您会直接复制并粘贴该命令。包含 which dockerwhich command will locate the docker executable, and the backticks 将使用 chmod 命令中的输出,因此无需知道 docker 可执行文件的确切位置。