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

PHPUnit+Composer规范目录结构下如何保持部署URL不变且无需修改代码

解决方案

方案1:调整Web服务器路径映射(最符合最佳实践)

这是业内通用的标准方案,同时满足你所有要求,还能提升生产环境安全性:

  • 生产部署时无需上传tests目录(测试代码仅需在本地/CI环境保留,生产环境完全不需要),将src、vendor目录整体上传到服务端非Web可访问的目录,比如/data/project/,此时目录结构为:
    /data/project/src/
    /data/project/vendor/
    
  • 修改Web服务器(Nginx/Apache)配置,将原路径https://server/path/的物理根目录指向/data/project/src/即可
  • 效果:用户访问https://server/path/my.php和原地址完全一致,my.php中require_once '../vendor/autoload.php'的代码不需要任何修改,同时vendor、composer.json等敏感文件不在Web可访问目录下,避免了恶意访问风险

方案2:通过部署脚本适配(无法修改服务器配置时选用)

如果你没有权限修改Web服务器配置,可以通过CI/CD部署脚本自动处理,全程不需要修改源码仓库内的src目录文件:

  1. 部署流程中拉取代码后,执行composer install --no-dev安装生产依赖(排除PHPUnit等开发包)
  2. 新建部署包目录,将src下所有文件、vendor目录统一拷贝到部署包根目录
  3. 用脚本命令自动替换my.php中的自动加载引入路径,比如用sed命令:
    sed -i "s#require_once '../vendor/autoload.php';#require_once 'vendor/autoload.php';#g" 部署包路径/my.php
    
  4. 将部署包整体上传到服务端path目录即可,访问地址和原有完全一致

临时方案说明

你提到的保留原有根目录结构仅新增tests目录的方案虽然可运行,但不符合Composer生态的通用规范,后续项目迭代维护成本会更高,优先选择前两个方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:03