AH01276:无法提供目录 /var/www/html/:找不到匹配的 DirectoryIndex(index.php、index.html)

eld*_*981 6 php apache docker docker-compose

我试图在 docker 容器中使用 docker-compose 来获取 php:apache 服务器。但撰写后我收到以下错误消息:

\n\n
[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\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的泊坞窗文件:

\n\n
FROM php:7.1-apache\n\nRUN apt-get update -y\nRUN apt-get upgrade -y\n\nRUN apt-get install -y \\\n        adduser \\\n        ca-certificates \\\n        unzip \\\n        curl \\\n        git \\\n        wget \\\n        openssl\n\nRUN docker-php-ext-install pdo_mysql\n\n# Installiere ben\xc3\xb6tigte PHP Erweiterungen\nRUN apt-get install -y \\\n        libfreetype6-dev \\\n        libjpeg62-turbo-dev \\\n        libmcrypt-dev \\\n        libpng12-dev \\\n    && docker-php-ext-install -j$(nproc) iconv mcrypt \\\n    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \\\n    && docker-php-ext-install -j$(nproc) gd\n\n# Install bcmath\nRUN docker-php-ext-install bcmath pcntl\n\n# Install Phalcon-PHP\nWORKDIR /phalcon/cphalcon\n\n# https://github.com/phalcon/cphalcon/releases\nENV PHALCON_VERSION "v3.2.1"\nRUN curl -L -o "phalcon-${PHALCON_VERSION}.tar.gz" "https://api.github.com/repos/phalcon/cphalcon/tarball/${PHALCON_VERSION}" \\\n    && tar -xvf "phalcon-${PHALCON_VERSION}.tar.gz" --strip 1 \\\n    && rm "phalcon-${PHALCON_VERSION}.tar.gz" \\\n    && cd /phalcon/cphalcon/build \\\n    && ./install\n\n# Install Phalcon Devtools\nWORKDIR /usr/local/lib/phalcon-devtools\n\n# https://github.com/phalcon/phalcon-devtools/releases\nENV PHALCON_DEVTOOLS_VERSION "v3.2.0"\nRUN curl -L -o "phalcon-devtools-${PHALCON_DEVTOOLS_VERSION}.tar.gz" "https://api.github.com/repos/phalcon/phalcon-devtools/tarball/${PHALCON_DEVTOOLS_VERSION}" \\\n    && tar -xvf "phalcon-devtools-${PHALCON_DEVTOOLS_VERSION}.tar.gz" --strip 1 \\\n    && rm "phalcon-devtools-${PHALCON_DEVTOOLS_VERSION}.tar.gz" \\\n    && ln -s /usr/local/lib/phalcon-devtools/phalcon.php /usr/bin/phalcon \\\n    && chmod +x /usr/bin/phalcon\n\n# Install Composer\nRUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer\nRUN chmod +x /usr/local/bin/composer\n\n# Install Dockerize\nENV DOCKERIZE_VERSION v0.5.0\nRUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \\\n    && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz\n\nWORKDIR /usr/src/fileserver\n\nCOPY config/apache/apache2.conf /etc/apache2/apache2.conf\nCOPY config/apache/envvars /etc/apache2/envvars\nCOPY config/apache/site-default.conf /etc/apache2/sites-available/000-default.conf\nCOPY config/apache/project.conf /etc/apache2/project.conf\nCOPY config/php.ini /usr/local/etc/php/\n\nCOPY run.sh /run.sh\nCOPY start_safe_perms.sh /start_safe_perms.sh\nRUN chmod 755 /*.sh\n\nRUN a2enmod rewrite\nRUN a2enmod headers\n\n\nVOLUME ["/usr/src/fileserver"]\n\nCMD ["/run.sh"]\n
Run Code Online (Sandbox Code Playgroud)\n\n

docker-撰写:

\n\n
version: \'3.1\'\n\nservices:\n\nfileserver:\n    build: fileServer/docker\n    container_name: fileServer\n    volumes:\n      - ./FileServer/:/usr/src/fileserver #/usr/src/app\n    ports:\n      - "5001:80"\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n

站点默认.conf

\n\n
<VirtualHost *:5001>\n\n  DocumentRoot /usr/src/fileserver/public\n\n  <Directory /usr/src/fileserver/public/>\n    Options Indexes FollowSymLinks\n    AllowOverride All\n    Require all granted\n  </Directory>\n\n  ErrorLog /usr/src/fileserver/docker/logs/error.log\n  CustomLog /usr/src/fileserver/docker/logs/access.log combined\n\n</VirtualHost>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n

Pal*_*tir 3

看起来您正在将端口 5001 从本地计算机公开到 docker 实例上的端口 80,但随后您在端口 5001 上定义虚拟主机。因此您的 site-default.conf 可能应该显示为:

<VirtualHost *:80>

请注意,错误是关于 /var/www/html/ (某些 Apache 默认目录)而不是您自己的 /usr/src/fileserver/public