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

Azure Web App中PHP存储PDF后锚点访问出现404错误求助

问题解决:Azure Web App中PHP上传PDF后无法通过链接访问

核心结论

完全可以通过Azure Web App的wwwroot文件夹存储PDF并直接访问,不需要额外付费存储服务,问题出在URL路径生成错误,调整代码即可解决。

问题根源

你在生成HTML锚点时使用了$_SERVER['DOCUMENT_ROOT'],这个变量返回的是服务器本地文件系统路径(比如Azure环境中通常是/home/site/wwwroot),但浏览器需要的是相对于网站根目录的URL路径。浏览器会把本地路径当成URL请求,自然返回404。

解决方案

1. 修正锚点路径生成代码

把基于DOCUMENT_ROOT的本地路径替换为网站根相对URL路径:

// 去掉DOCUMENT_ROOT,改用网站根相对路径(/开头对应wwwroot目录)
$urlPath=  "/pdf/contratos/";
// 移除无效的ContentType属性,服务器会自动识别PDF类型
$actionButton = '<a href="'.$urlPath.$row['nombre_archivo'].'" class="btn btn-dark" target="_blank" role="button"><i class="fa fa-file-text"></i> Ver Desc</a>';
$output['data'][] = array(
  $row['Id'],
  $row['Title'],
  $row['Description'],
  $row['fileName'],
  $actionButton
);

2. 验证文件实际存在性

通过Azure Web App的Kudu工具确认文件是否正确上传到目标文件夹:

  • 登录Azure门户,进入你的Web App,左侧菜单选择「高级工具」→「Go」打开Kudu控制台
  • 在「Debug console」中选择「CMD」,导航到site/wwwroot/pdf/contratos,确认目标PDF文件存在

3. 检查URL重写规则(若有用到)

如果你的应用使用了.htaccess或web.config做URL重写,确保没有拦截/pdf/开头的请求。可以在web.config中添加允许PDF访问的规则:

<rule name="AllowPDFAccess" stopProcessing="true">
  <match url="^pdf/.*\.pdf$" />
  <action type="None" />
</rule>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:52:34