PHP Docker环境下.htaccess无法访问,请求排查解决
解决Docker Apache无法读取.htaccess文件的问题
出现Server unable to read htaccess file, denying access to be safe错误,核心原因是Apache运行的www-data用户对挂载到容器内/var/www/html的本地目录及.htaccess文件没有读取权限,或者Apache配置未允许解析.htaccess。
解决步骤:
调整本地项目目录权限
在本地项目根目录执行以下命令,确保文件和目录权限符合Apache要求:chown -R www-data:www-data ./ chmod -R 755 ./ chmod 644 ./.htaccess755权限让目录所有者可读写执行,其他用户可读可执行;644权限让.htaccess文件所有者可读写,其他用户可读,满足Apache的读取要求。
修改Dockerfile,配置容器内权限与Apache规则
更新后的Dockerfile需添加权限配置和Apache AllowOverride设置:FROM php:7.4.30-apache RUN docker-php-ext-install pdo pdo_mysql RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli RUN a2enmod rewrite # 确保www-data拥有目录权限 RUN chown -R www-data:www-data /var/www/html RUN chmod -R 755 /var/www/html # 修改Apache配置,允许解析.htaccess RUN sed -i '/<Directory \/var\/www\/html\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/sites-available/000-default.conf重新构建并启动容器
执行以下命令重启服务:docker-compose down docker-compose build docker-compose up -d
内容的提问来源于stack exchange,提问作者Maxime2i
相关产品推荐
相关产品推荐

