当我在docker中为mkdir运行我的php代码时,它在浏览器中显示如下内容
Warning: mkdir(): Permission denied in /var/www/html/test.php on line 9
Warning: mkdir(): Permission denied in /var/www/html/test.php on line 12
我一直在搜索,但无法找到任何合适的源代码供我使用。我如何允许docker给予我的php权限或解决方案是什么?
下面是我的PHP代码
<?php
$postk = "1220";
$root = "login/";
$room_id = "foile";
$NewRoot = "movie";
if (!file_exists($root . $postk)) {
$dirPathp = $root . $postk;
$resultp = mkdir($dirPathp, 0777, true);
$dirPathpr = $root . $postk . "/" . $room_id;
$resultpr = mkdir($dirPathpr, 0777, true);
} else {
$dirPathpr = $root . $postk . " / " . $room_id;
$resultpr = mkdir($dirPathpr, 0777, true);
} ?>
这是我的Docker文件
FROM php:7.3-apache
#Install git and Mysql Extensions for php
RUN apt-get update && apt-get install -y git
RUN docker-php-ext-install pdo pdo_mysql mysqli
RUN a2enmod rewrite
COPY . /var/www/html/
EXPOSE 80/tcp
EXPOSE 443/tcp
Docker compose文件
version: '3.8'
volumes:
datafiles:
services:
mysql:
image: mysql:8.0.0
container_name: mysql6
environment:
- MYSQL_ROOT_PASSWORD=sopno_1818120**
- MYSQL_TCP_PORT=3306
- TZ=Asia/Dhaka
volumes:
- datafiles:/var/lib/mysql
restart: always
website:
container_name: php6
build:
context: .
dockerfile: Dockerfile
environment:
- DB_HOST=mysql
- MYSQL_DBPORT=3306
- DB_USERNAME=sopnobari_tuneb
- DB_PASSWORD=sopno_1818120**
- DB_NAME=sopnobari_sopno
ports:
- "3050:80"
- "3051:443"
depends_on:
- mysql
2条答案
按热度按时间a1o7rhls1#
我有办法了
在docker文件中添加以下代码
2lpgd9682#
出现这个问题是因为当你将一个卷挂载到你的docker容器中时,主机系统的文件和目录所有权也会沿着给容器。
在你的主机系统上的文件是由你的用户拥有的,而PHP在另一方面是在用户www-data上运行的。这种差异导致了权限问题。
检查this以解决问题。