2016-05-06 3 views
6

Ich benutze Docker komponieren. Wenn ich "docker-compose up" ausführe, bin ich auf einen Fehler gestoßen: /var/www/html/.htaccess: Ungültiger Befehl 'RewriteEngine'.Apache Docker Container - Ungültiger Befehl 'RewriteEngine'

Können Sie mir sagen, wo ich versage?

Projekt Architektur:

project-name/
      /docker-compose.yml 
      /Dockerfile 
      /apache.conf 
      /php.ini 
      /src/
       /index.php 
       /.htaccess 

Docker-compose.yml:

web: 
    build: . 
    ports: 
     - "80:80" 
    volumes: 
     - ./src:/var/www/html 
     - php.ini:/usr/local/etc/php/conf.d/30-custom.ini 
     - apache.conf:/etc/apache2/sites-enabled 
    environment: 
     - ALLOW_OVERRIDE=true 

Dockerfile:

FROM php:7.0-apache 

RUN a2enmod rewrite 

RUN service apache2 restart 

ADD ./src /var/www/html 

php.ini:

display_errors=1 
error_reporting=E_ALL 

apache.conf (mit meiner IP-Adresse):

<VirtualHost *:80> 
    ServerName xxx.xxx.xx.xxx 
    DocumentRoot /var/www/html 
</VirtualHost> 

ich in der Befehlszeile:

[email protected]:/blabla/project-name$ docker-compose up 

es gibt mir:

AH00558: apache2: Could not reliably determine the server's fully 
qualified domain name, using xxx.xx.x.x. Set the 'ServerName' directive 
globally to suppress this message 

und

/var/www/html/.htaccess: Invalid command 'RewriteEngine', 
perhaps misspelled or defined by a module not included in the server 
configuration 

und im Browser, in meine IP-Adresse (http://xxx.xxx.xx.xxx/):

500 Internal servor error 

meine .htaccess:

<files .htaccess> 
    Require all denied 
</files> 
Options +FollowSymlinks -Indexes -Multiviews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA] 

Ich bin auf dem Fenster und ich verwende Oracle VM Virtual Box.

Vielen Dank im Voraus!

EDIT: Ich sollte sagen, dass, wenn ich Rewrite-Regeln zu löschen, alles funktioniert.

+0

Versuchen Sie, die Zeile 'RUN service apache2 restart' zu entfernen. Sie starten keinen Apache, wenn Sie ein Image erstellen. – VonC

+0

immer das gleiche Problem. – HeyDaddy

Antwort

10

Dies funktioniert für mich:

# Dockerfile 
FROM php:5.6-apache 

MAINTAINER Raphael Mäder <[email protected]> 

RUN a2enmod rewrite 

ADD . /var/www/html 

Vergessen Sie nicht, Ihren docker-compose up Befehl mit --build ausführen, wenn Sie bereits das Bild zuvor aufgebaut haben, sonst wird es das alte Bild laufen, die nicht die RUN a2enmod rewrite enthalten haben Erklärung.

+0

Hat jemand herausgefunden, wie man dies von einem der httpd Bilder tun? Ich bin mehr interessiert an einem Apache + mod_rewrite Bild im Gegensatz zu einem Apache + php + mod_rewrite Bild. – Christian