当前位置: 首页 > 知识库问答 >
问题:

Docker PHP exec()函数:拒绝权限

周辉
2023-03-14

我试图在PHP中运行exec()函数,但是我得到了一个'Permission Denied'输出。PHP是作为Docker容器安装的。我在Raspberry PI和我的MacBook上都得到了这个。

作为一个测试,我在没有Docker的情况下安装了LAMP,它工作得很好,但在Docker上就不行了。

例如,当我运行

echo exec('docker --version');

我在浏览器中的PHP脚本中获得以下信息:

sh: 1: docker: Permission denied

而且运行exec()函数还是像shell_exec()或system()这样的任何替代函数都无关紧要。这几天我试了所有的办法都没有成功。这肯定是码头工人的事,但我不知道是什么。

我尝试过的一些事情:

  • 更改了我的.php文件的所有权及其所在的dirs
  • 将权限更改为777
  • 已将www-data用户添加到sudoers文件
  • 将www-data添加到docker组

共有1个答案

冯新知
2023-03-14

您得到的错误表明exec正在工作,但是运行该命令的用户没有访问docker二进制文件的权限。

您必须修改docker容器中的权限,以允许web用户运行docker命令。您将希望将这些步骤添加到DockerFile中。

RUN chmod go+x `which docker`

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

 类似资料:
  • 我在Macbook pro osx 10.9 Firefox浏览器上使用XAMP 1.7.3 基本上,我正在尝试编写一个代码,要求用户输入一些信息,然后使用以下方法将信息存储在.txt文件中: 但是我一直收到这个错误消息: 警告:fopen(registration.txt) [function.fopen]:无法打开流:第 30 行的 /Applications/XAMPP/xamppfiles

  • 问题内容: 当我尝试运行简单的docker命令时,例如: 我收到一条错误消息: 获得权限被拒绝… /var/run/docker.sock:connect:权限被拒绝 当我检查权限 我看到这一行: 因此,我遵循许多论坛的建议并将本地用户添加到docker组: 但这无济于事。我仍然收到非常相同的错误消息。我该如何解决? 问题答案: 对于那些刚接触shell的人,命令: 需要在您的外壳中定义。默认情况

  • 问题内容: 尝试显示URI时出现以下异常。我认为这是在我的活动停止后发生的,我尝试再次访问可行的URI。还有其他问题可以解决这个问题,但是我对如何对我的代码应用任何解决方案感到非常困惑,因为我的takePhotoIntent允许拍照或从图库中选择图片(如下所示)。 我的createImageFile和我的takePhotoIntent: 问题答案: 根据Storage Access Framewo

  • 问题内容: 我对编码比较陌生,遇到了麻烦。 我有这段代码可以将数据发送到Firebase 但是,我不断收到错误: FIREBASE警告:设置为/ users /(GoogleID)失败:Permission_denied 2016-05-23 22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(…) 当我尝试查找时,它谈论的是