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

如何在GitHub站点执行PHP脚本并实现自动读取目录的图片画廊?

搞定你的图片画廊:解决GitHub Pages不支持PHP的问题

嘿,我来帮你理清楚核心问题和对应的解决方案!

首先得明确一个关键事实:GitHub Pages完全不支持PHP脚本执行——它只托管静态内容(HTML/CSS/JS)或者Jekyll生成的静态页面。所以你把PHP代码推到GitHub后,远程站点只会把PHP代码当成纯文本输出,根本不会执行,这就是你看到远程效果不对的原因。

接下来分两部分帮你解决:本地调试PHP的正确姿势,以及适合GitHub Pages的纯静态图片画廊方案。

一、本地让PHP在你的GitHub仓库目录正常运行

你之前的问题在于:你的网站文件存在C:/Documents/Github/xxxx/xxxx,但你要么用Jekyll的localhost:4000(它只处理静态内容,不解析PHP),要么用Apache默认的htdocs目录,两边不统一。

这里有两个简单的解决办法:

方法1:修改Apache的根目录

打开Apache的httpd.conf配置文件,找到这两行:

DocumentRoot "C:/Apache24/htdocs"
<Directory "C:/Apache24/htdocs">

把里面的路径改成你的GitHub仓库路径C:/Documents/Github/xxxx/xxxx,保存后重启Apache服务。之后访问http://localhost就能直接访问你的网站,同时PHP脚本会被正常解析。

方法2:配置Apache虚拟主机(更灵活)

如果你不想改动Apache的默认根目录,可以给你的GitHub仓库配置一个单独的本地域名:

  1. 打开httpd.conf,确保Include conf/extra/httpd-vhosts.conf这一行没有被注释(去掉前面的#)
  2. 打开conf/extra/httpd-vhosts.conf,添加这段配置:
    <VirtualHost *:80>
        DocumentRoot "C:/Documents/Github/xxxx/xxxx"
        ServerName mywebsite.local
    </VirtualHost>
    
  3. 打开本地的hosts文件(路径是C:\Windows\System32\drivers\etc\hosts),添加一行:127.0.0.1 mywebsite.local
  4. 重启Apache,之后访问http://mywebsite.local就能用Apache解析你仓库里的PHP代码了。

二、GitHub Pages上实现图片画廊的纯静态方案

既然GitHub Pages不支持PHP,我们换纯前端或者用Jekyll的能力来实现自动生成图片列表:

方案1:用Jekyll自动生成图片标签(最适合你的工作流)

你本来就在用Jekyll,它支持Liquid模板语法,可以自动遍历目录里的图片文件,生成对应的<img>标签。在你的页面里添加这段代码:

<div id="image-gallery">
  {% for image in site.static_files %}
    {% if image.path contains 'images/' and image.extname == '.jpg' %}
      <img src="{{ image.path }}" alt="Gallery image" class="gallery-img">
    {% endif %}
  {% endfor %}
</div>

这样不管是本地用Jekyll构建,还是推到GitHub Pages后自动构建,Jekyll都会帮你遍历images目录下的所有JPG文件,自动生成所有<img>标签,最终输出的是纯静态HTML,完美适配GitHub Pages。

方案2:手动/脚本生成JSON,用JS加载

如果你的站点不用Jekyll的Liquid语法,也可以提前生成一个包含所有图片文件名的JSON文件:

  1. 手动创建images.json(适合图片不常更新的情况):
    {
      "images": [
        "sunset.jpg",
        "mountain.jpg",
        "lake.jpg"
        // 把所有JPG文件名列在这里
      ]
    }
    
  2. 或者用Python脚本批量生成(适合图片多的情况):
    import os
    import json
    
    image_dir = "images"
    jpg_files = [f for f in os.listdir(image_dir) if f.lower().endswith(".jpg")]
    
    with open("images.json", "w") as f:
        json.dump({"images": jpg_files}, f)
    

然后用jQuery加载这个JSON并生成图片:

<div id="gallery"></div>

<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script>
$(document).ready(function() {
  $.getJSON("images.json", function(data) {
    const gallery = $("#gallery");
    data.images.forEach(imgName => {
      const img = $("<img>").attr("src", `images/${imgName}`).attr("alt", "Gallery image");
      gallery.append(img);
    });
  });
});
</script>

总结一下

  • 本地调试PHP:必须让你的GitHub仓库目录通过Apache访问(改根目录或虚拟主机),别用Jekyll的默认服务器,它不解析PHP。
  • 远程GitHub Pages:放弃PHP,用Jekyll自动生成静态图片列表是最省心的方案,完全适配你的现有工作流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:20:40