我用docker compose.但是,当我运行“docker-compose up”时,我遇到了一个错误:/var/www/html/.htaccess:无效的命令’RewriteEngine’.
你能告诉我哪里失败了吗?
项目架构:
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(带我的IP地址):
<VirtualHost *:80> ServerName xxx.xxx.xx.xxx DocumentRoot /var/www/html </VirtualHost>
我输入命令行:
docker@default:/blabla/project-name$docker-compose up
它回报我:
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
和
/var/www/html/.htaccess: Invalid command 'RewriteEngine',perhaps misspelled or defined by a module not included in the server configuration
在浏览器中,在我的IP地址(http://xxx.xxx.xx.xxx/)中:
500 Internal servor error
我的.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]
我在Windows上,我使用Oracle VM Virtual Box.
先感谢您 !
编辑:我应该说,如果我删除重写规则,一切正常.
这对我有用:
# Dockerfile FROM PHP:5.6-apache MAINTAINER Raphael Mäder <me@randm.ch> RUN a2enmod rewrite ADD . /var/www/html
如果您之前已经构建了图像,请不要忘记使用–build运行docker-compose up命令,否则它将运行可能未包含RUN a2enmod重写语句的旧图像.