php - 如何提供对 PHP Docker 镜像和主机卷的权限?

标签 php docker fedora

我正在使用官方 PHP docker 图像,我正在尝试将主机路径添加为 VOLUME。我的意图是促进本地发展。

我的 Dockerfile 非常基础:

FROM php:5.6-apache
VOLUME ["/var/www/html/"]

然后在我的 docker run 命令中添加 -v 标志:

$ docker run -d -v ~/Workspace/website/:/var/www/html/ ...

但是,我在开始后收到 403。如果我执行 bash 条目,我可以看到/var/www/html 权限被拒绝。我认为这与 guest 的“外星人”用户/组有关。

日志:

[Tue Jan 26 00:29:38.182727 2016] [core:error] [pid 10] (13)Permission denied: [client 192.168.5.1:37996] AH00035: access to /index.php denied (filesystem path '/var/www/html/index.php') because search permissions are missing on a component of the path 192.168.5.1 - - [26/Jan/2016:00:29:38 +0000] "GET /index.php HTTP/1.1" 403 446 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"

统计:

# stat html/
File: 'html/'
Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 3148160     Links: 26
Access: (0775/drwxrwxr-x)  Uid: ( 1000/ UNKNOWN)   Gid: ( 1000/ UNKNOWN)
Access: 2016-01-25 23:17:57.096095138 +0000
Modify: 2016-01-26 00:28:10.274181924 +0000
Change: 2016-01-26 00:28:10.274181924 +0000

更新

我采纳了 Geany 的建议,将 www-data 组的 gid 更改为 1000 以匹配主机路径的 gid。

$ id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ groupmod -g 1000 www-data
$ id www-data
uid=33(www-data) gid=1000(www-data) groups=33(www-data)
$ stat html/
File: 'html/'
Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 3148160     Links: 26
Access: (0775/drwxrwxr-x)  Uid: ( 1000/ UNKNOWN)   Gid: ( 1000/ www-data)
Access: 2016-01-25 23:17:57.096095138 +0000
Modify: 2016-01-26 00:28:10.274181924 +0000
Change: 2016-01-26 00:28:10.274181924 +0000

但是,这仍然没有修复权限。我什至更改了 uid。

更新 #2

我刚刚确认它可以在 OS X 上完美运行。我最初试图让它在 Fedora 23 上运行。

最佳答案

您应该检查 apache 工作进程的用户和组以及 chown 源目录。 另一种方法是更改​​ apache worker 用户的 gid 和 uid。

关于php - 如何提供对 PHP Docker 镜像和主机卷的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004634/

相关文章:

php - 多个查询返回错误为什么?

php - 使用 MySQLi 的 real_escape_string 作为静态函数

docker-compose 找不到包

linux - 是否可以在 RedHat Linux 服务器上安装 Fedora 软件包?

android - Fedora 21 adb 一直说错误 : device not found

php - 无法在数据库中存储图片(没有出现错误信息)

mysql - docker commit mysql 不保存

windows - docker 镜像构建卡住了

fedora - 如何在 fedora 22 上安装 libgcrypt.so.11

TCP SSL 中的 PHP stream_socket_client 与 cURL