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
相关产品推荐
相关产品推荐

