You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署PHP(Smarty)+SQLite3网站遇PHP代码纯文本显示问题求助

修复PHP(Smarty)+SQLite3网站Docker化配置问题

核心问题分析

  1. PHP代码显示纯文本:虽使用php:apache镜像,但缺少Smarty依赖导致PHP逻辑无法正常执行,同时可能存在文件复制不完整的情况;
  2. 未安装Smarty模板引擎:当前Dockerfile仅配置了基础PHP扩展,未引入Smarty组件;
  3. SQLite3数据未持久化:容器重启后数据会丢失,需配置卷挂载实现数据留存。

修复后的Dockerfile

FROM php:8.2.0-apache

# 安装系统依赖及PHP扩展
RUN apt-get update && apt-get install -y \
    libzip-dev unzip curl sqlite3 libsqlite3-dev \
    && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-install zip pdo pdo_sqlite

# 安装Composer(用于管理Smarty依赖)
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# 设置工作目录
WORKDIR /var/www/html

# 复制Composer配置文件并安装依赖(若项目已用Composer管理Smarty)
COPY composer.json composer.lock* ./
RUN composer install --no-dev --optimize-autoloader

# 复制项目所有文件(包括PHP入口、模板、数据库等)
COPY . .

# 设置目录权限:Smarty需要读写缓存和配置目录
RUN chown -R www-data:www-data /var/www/html \
    && chmod -R 755 /var/www/html/templates/cache /var/www/html/templates/configs

# 启用Apache重写模块
RUN a2enmod rewrite

CMD ["apache2-foreground"]

Dockerfile修改说明

  • 新增Composer安装:用于拉取Smarty依赖,若项目未使用Composer,可替换为手动下载Smarty的步骤;
  • 补充权限设置:给Smarty所需的缓存、配置目录分配读写权限,避免模板渲染失败;
  • 优化镜像体积:清理apt安装缓存,减少镜像大小;
  • 完整复制项目文件:确保所有PHP逻辑、模板、数据库文件都同步到容器内。

修复后的compose.yaml

services:
  web:
    build: .
    container_name: corporate_site_web
    ports:
      - "8000:80"
    volumes:
      # 挂载本地项目目录,开发时实时同步修改(可选,生产环境可移除)
      - ./:/var/www/html
      # 挂载SQLite数据库目录,实现数据持久化(路径根据你的实际存储位置调整)
      - db-compose-volume:/var/www/html/data
    networks:
      - corporate_site_network

networks:
  corporate_site_network:
    driver: bridge

volumes:
  db-compose-volume:

Compose配置修改说明

  • 新增本地目录挂载:开发阶段无需频繁重建镜像,本地文件修改可直接同步到容器;
  • 配置数据库卷:将SQLite数据库所在目录挂载到命名卷,避免容器销毁后数据丢失;
  • 保留原有网络配置:维持容器网络隔离特性。

额外注意事项

  1. Smarty手动安装(未用Composer场景):
    若项目未通过Composer管理依赖,可在Dockerfile中添加以下步骤下载Smarty:

    RUN curl -L https://github.com/smarty-php/smarty/archive/refs/tags/v4.3.0.tar.gz | tar xz -C /var/www/html \
        && mv /var/www/html/smarty-4.3.0 /var/www/html/smarty
    

    之后在PHP代码中调整Smarty的引入路径即可。

  2. 验证PHP解析功能:
    在项目根目录创建info.php,内容为<?php phpinfo(); ?>,访问localhost:8000/info.php,若能正常显示PHP信息则说明解析配置正常。

  3. Smarty模板路径检查:
    确保PHP代码中Smarty的模板目录、缓存目录路径,与容器内的实际路径一致(默认对应/var/www/html/templates)。

内容的提问来源于stack exchange,提问作者user27844577

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:46:06