php - AH01276 : Cannot serve directory/var/www/html/: No matching DirectoryIndex (index. php,index.html) 找到

标签 php apache docker docker-compose

我试图在 docker 容器中使用 docker-compose 获取 php:apache 服务器以工作。但是在组合之后,我收到以下错误消息:

[client 172.21.0.1:49230] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.php,index.html) found, and server-generated directory index forbidden by Options directive

我的码头文件:
FROM php:7.1-apache

RUN apt-get update -y
RUN apt-get upgrade -y

RUN apt-get install -y \
        adduser \
        ca-certificates \
        unzip \
        curl \
        git \
        wget \
        openssl

RUN docker-php-ext-install pdo_mysql

# Installiere benötigte PHP Erweiterungen
RUN apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
    && docker-php-ext-install -j$(nproc) iconv mcrypt \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd

# Install bcmath
RUN docker-php-ext-install bcmath pcntl

# Install Phalcon-PHP
WORKDIR /phalcon/cphalcon

# https://github.com/phalcon/cphalcon/releases
ENV PHALCON_VERSION "v3.2.1"
RUN curl -L -o "phalcon-${PHALCON_VERSION}.tar.gz" "https://api.github.com/repos/phalcon/cphalcon/tarball/${PHALCON_VERSION}" \
    && tar -xvf "phalcon-${PHALCON_VERSION}.tar.gz" --strip 1 \
    && rm "phalcon-${PHALCON_VERSION}.tar.gz" \
    && cd /phalcon/cphalcon/build \
    && ./install

# Install Phalcon Devtools
WORKDIR /usr/local/lib/phalcon-devtools

# https://github.com/phalcon/phalcon-devtools/releases
ENV PHALCON_DEVTOOLS_VERSION "v3.2.0"
RUN curl -L -o "phalcon-devtools-${PHALCON_DEVTOOLS_VERSION}.tar.gz" "https://api.github.com/repos/phalcon/phalcon-devtools/tarball/${PHALCON_DEVTOOLS_VERSION}" \
    && tar -xvf "phalcon-devtools-${PHALCON_DEVTOOLS_VERSION}.tar.gz" --strip 1 \
    && rm "phalcon-devtools-${PHALCON_DEVTOOLS_VERSION}.tar.gz" \
    && ln -s /usr/local/lib/phalcon-devtools/phalcon.php /usr/bin/phalcon \
    && chmod +x /usr/bin/phalcon

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN chmod +x /usr/local/bin/composer

# Install Dockerize
ENV DOCKERIZE_VERSION v0.5.0
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz

WORKDIR /usr/src/fileserver

COPY config/apache/apache2.conf /etc/apache2/apache2.conf
COPY config/apache/envvars /etc/apache2/envvars
COPY config/apache/site-default.conf /etc/apache2/sites-available/000-default.conf
COPY config/apache/project.conf /etc/apache2/project.conf
COPY config/php.ini /usr/local/etc/php/

COPY run.sh /run.sh
COPY start_safe_perms.sh /start_safe_perms.sh
RUN chmod 755 /*.sh

RUN a2enmod rewrite
RUN a2enmod headers


VOLUME ["/usr/src/fileserver"]

CMD ["/run.sh"]

docker 组成:
version: '3.1'

services:

fileserver:
    build: fileServer/docker
    container_name: fileServer
    volumes:
      - ./FileServer/:/usr/src/fileserver #/usr/src/app
    ports:
      - "5001:80"

我认为错误来自我的 site-default.config,它通常应该覆盖 000-default.conf

但我不知道为什么默认目录是 var/www/html。它应该是/usr/src/fileserver/public/(如果我在这个容器中做 docker exec,它会显示带有 index.php 的文件服务器文件夹)

站点-default.conf
<VirtualHost *:5001>

  DocumentRoot /usr/src/fileserver/public

  <Directory /usr/src/fileserver/public/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>

  ErrorLog /usr/src/fileserver/docker/logs/error.log
  CustomLog /usr/src/fileserver/docker/logs/access.log combined

</VirtualHost>

有人能帮我吗? (如果需要,请询问更多信息)

最佳答案

看起来您正在将端口 5001 从本地计算机公开到 docker 实例上的端口 80,但随后您在端口 5001 上定义了您的虚拟主机。所以您的 site-default.conf 可能应该是:
<VirtualHost *:80>
请注意,该错误与/var/www/html/(某些 Apache 默认目录)有关,而不是您自己的/usr/src/fileserver/public

关于php - AH01276 : Cannot serve directory/var/www/html/: No matching DirectoryIndex (index. php,index.html) 找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49429267/

相关文章:

apache - 重写模块以处理站点版本文件夹(条斜杠)

docker - 如何在相同的 Heroku 应用程序但不同的 docker 镜像中部署前端和后端

docker - Docker-是否有必要将镜像推送到远程服务器?

php - 如何安装供所有用户全局使用的 Python 包(包括 www-data)

PHP SoapClient - 可能的名称间距问题 - 非 wsdl 模式

php - 在 Php 中从 MySql 输出中添加或删除缺货数据

java - 我如何在 Eclipse 中解决这个项目方面?

php - 插入数据库中具有两位小数的千位数的格式

Spring 安全性与 Apache Shiro

Docker 容器中 Alpine Linux (arm32v6) 上的 PostgreSQL 9.6.9 - 如何安装正确的 postgresql-contrib 包?