从子目录访问根级子目录被拒:GoDaddy服务器HTTP502问题求助
问题描述
站点结构:
- 脚本路径:
mysite.co.uk/admin/file.php - 图片存储路径:
mysite.co.uk/files/images/product/
在file.php中使用以下代码读取product文件夹内的图片时,服务器返回HTTP 502网关错误,但读取上级的../files/images/目录正常:
$dir = "../files/images/product/"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { $files[] = $filename; } sort($files); foreach ($files as $filename){ echo "<option value='". $filename . "'>" . $filename . "</option>"; }
已尝试操作:
- 防火墙允许
files/images/product路径 - 将文件夹权限从0755改为0644(反而引发更多故障)
服务器环境:GoDaddy
解决方案
改用绝对路径读取目录
GoDaddy服务器的虚拟目录结构可能导致相对路径解析异常,用$_SERVER['DOCUMENT_ROOT']构建绝对路径可以避免这个问题:$dir = $_SERVER['DOCUMENT_ROOT'] . '/files/images/product/'; $dh = opendir($dir); // 后续代码保持不变恢复正确的目录权限
文件夹需要执行权限才能被PHP脚本访问,之前将product文件夹权限改为0644是错误的,必须改回0755;文件夹内的图片文件权限设为0644即可。查看PHP错误日志定位根源
登录GoDaddy的cPanel面板,找到「错误日志」功能,查看HTTP 502对应的具体错误信息(比如opendir失败、PHP进程崩溃、内存不足等),这是排查502错误最直接的方式。调整PHP错误记录配置
在file.php开头添加以下代码,确保错误被记录到日志而不是输出到页面,避免因错误输出导致的HTTP头异常:error_reporting(E_ALL); ini_set('display_errors', 0); ini_set('log_errors', 1);检查.htaccess限制规则
排查files/images/product/目录及其上级目录的.htaccess文件,确认没有添加Deny from all、RewriteRule等阻止PHP脚本读取目录的规则。
内容的提问来源于stack exchange,提问作者Annamaria
相关产品推荐
相关产品推荐

