我试图在容器内运行CakePHP 2应用程序。我有一切设置和PHP正常工作,但有一个问题:/ var / www / app / tmp有不正确的写权限。该目录从卷
加载答案 0 :(得分:0)
您是否已经看过CakePHP2.0文档?也许这很有用:
一个常见问题是app / tmp目录和子目录必须可由Web服务器和命令行用户写入。在UNIX系统上,如果Web服务器用户与命令行用户不同,则可以在项目中仅运行一次以下命令,以确保正确设置权限:
HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
setfacl -R -m u:${HTTPDUSER}:rwx app/tmp
setfacl -R -d -m u:${HTTPDUSER}:rwx app/tmp
来源:https://book.cakephp.org/2.0/en/installation.html#permissions
答案 1 :(得分:0)
如果你通过容器passthrough运行PHP,这种情况会发生很多。在这种情况下,您将目录传递给具有预定义权限的应用程序。您需要做的是定期确保从容器更新到Web服务器的权限。让我们说你的容器叫做web
docker exec web chown -R www-data / var / www / html
(/ var / www / html将替换为您的代码所在的位置)
例如。这将使其在容器中完美地工作,但如果您使用Linux,实际上可能会导致从主机操作系统访问数据的问题。我使用来自主机的卷直通Laravel和PHP多次出现此问题,因为卷的文件本身已更新为主机操作系统没有的用户ID。