我正在使用 php-fpm 和 apache2 通过 docker 制作网站。我尝试将网站 Docker 化。
但是我遇到了一个问题:
权限被拒绝:无法打开索引目录:/var/www/html/
apache2.conf(仅有趣的行)
<Directory /var/www>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html/public>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
在我的泊坞窗内,权利
drwxr-x--x 19 1000 1000 4096 Jan 16 10:21 .
drwxr-xr-x 1 root root 4096 Jan 22 2019 ..
-rw-r----- 1 1000 1000 214 Nov 21 13:11 .babelrc
drwxr-x--- 8 1000 1000 4096 Jan 3 15:52 .git
-rw-r----- 1 1000 1000 5339 Jan 2 09:28 .gitignore
drwxr-x--- 3 1000 1000 4096 Nov 22 16:02 .idea
drwxr-x--- 4 999 1000 4096 Jan 17 08:15 .mariadb-data
-rw-r----- 1 1000 1000 966 Jan 16 14:00 Dockerfile
-rw-r----- 1 1000 1000 1548 Nov 21 13:11 LICENSE
-rw-r----- 1 1000 1000 9613 Jan 2 09:28 README.md
drwxr-x--- 2 1000 1000 4096 Jan 16 08:10 apache
-rw-r----- 1 1000 1000 979 Nov 21 13:11 bitbucket-pipelines.yml
-rw-r----- 1 1000 1000 351 Nov 21 13:11 composer.json
-rw-r----- 1 1000 1000 9789 Jan 2 09:28 composer.lock
drwxr-x--- 4 1000 1000 4096 Nov 21 13:11 config
drwxr-x--- 4 1000 1000 4096 Nov 21 13:11 doc
-rw-r----- 1 1000 1000 718 Jan 10 15:15 docker-compose.yml
-rw-r----- 1 1000 1000 1812 Nov 21 13:11 init_autoloader.php
drwxr-x--- 8 1000 1000 4096 Nov 21 13:11 language
drwxr-x--- 3 1000 1000 4096 Jan 3 15:12 logs
drwxr-x--- 4 1000 1000 4096 Nov 21 13:11 module
drwxr-x--- 2 1000 1000 4096 Nov 21 13:11 nbproject
drwxr-x--- 641 1000 1000 24576 Jan 10 15:58 node_modules
-rw-r----- 1 1000 1000 313535 Jan 10 15:58 package-lock.json
-rw-r----- 1 1000 1000 1246 Jan 10 15:58 package.json
drwxr-x--- 2 1000 1000 4096 Jan 2 09:28 php-fpm
drwxr-xr-x 11 1000 1000 4096 Jan 16 10:21 public
drwxr-x--- 2 1000 1000 4096 Nov 21 13:11 tests
drwxr-x--- 3 1000 1000 4096 Nov 21 13:11 tools
drwxr-x--- 3 1000 1000 4096 Jan 2 09:39 var
drwxr-x--- 7 1000 1000 4096 Jan 10 15:57 vendor
Docker 组合
version: '3.2'
services:
mysql:
image: mariadb:10.4
container_name: mariadb
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./config/sql/schema.sql:/docker-entrypoint-initdb.d/schema.sql
- ./.mariadb-data:/var/lib/mysql
php:
build: ./php-fpm
container_name: php
ports:
- '9002:9000'
volumes:
- ./:/var/www/html/
links:
- mysql
apache:
build: .
container_name: apache
ports:
- '8085:80'
volumes:
- ./:/var/www/html/
apache的Dockerfile
FROM php:5.6-apache
# Node.js
RUN curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh
RUN bash nodesource_setup.sh
RUN apt-get install nodejs -y
RUN npm install [email protected] -g
RUN command -v node
RUN command -v npm
# Git
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git
COPY ./package*.json /var/www/html/
WORKDIR /var/www/html/
RUN npm install
ADD ./apache/docker-php.conf /etc/apache2/conf-available/docker-php.conf
ADD ./apache/docker-php.conf /etc/apache2/conf-enabled/docker-php.conf
ADD ./apache/apache2.conf /etc/apache2/apache2.conf
CMD apachectl -D FOREGROUND
我发送了您查找问题所需的所有代码。我尝试修复此错误,但无法修复。
问题似乎不是来自docker。我只尝试修改apache2配置。
我的index.php在公共文件夹中
有谁知道如何删除它?
我不知道你是否已经解决了问题,但我发现对我来说,目录
docker-php.conf
中名为 /etc/apache2/conf-enabled/
的文件弄乱了目录。
我已按以下方式更改:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
DirectoryIndex index.html index.php
<Directory /var/www/>
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Require all granted
</Directory>
现在一切似乎都很顺利,至少对我来说是这样。
该文件必须添加到 Dockerfile 中:
ADD ./docker-php.conf /etc/apache2/conf-enabled/docker-php.conf
但它已经存在于你的中,所以你应该没有问题。