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

PHP添加产品返回空白页/500错误:本地正常,cPanel服务器异常求助

问题分析与解决方案

一、优先排查代码本身的问题

本地正常、线上异常,大多是代码细节或环境适配问题,先从以下几点修正:

  1. SELECT查询语法错误
    原查询语句的GROUP BY id=:id是错误写法,GROUP BY后应跟字段名而非条件,且此场景不需要GROUP BY。直接修改为:
$stmt = $conn->prepare("SELECT COUNT(*) AS numrows FROM products WHERE slug=:slug");
$stmt->execute(['slug'=>$slug]);
$row = $stmt->fetch();

本地MySQL的sql_mode可能宽松未触发报错,线上服务器sql_mode严格会直接导致查询失败,打乱代码执行流程。

  1. 文件上传路径权限
    线上服务器的../images/目录大概率没有写入权限,在cPanel中需将该目录权限设为755(或根据服务器要求调整),否则move_uploaded_file执行失败会引发后续代码异常。

  2. 开启PDO错误捕获
    本地可能默认开启了错误提示,线上未开启导致看不到具体报错。在includes/session.php的PDO初始化代码中添加错误模式配置:

$pdo = new PDO($dsn, $username, $password, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);

这样能精准捕获SQL执行错误,快速定位问题。

  1. 表单提交验证
    检查前端表单的提交方式是否为POST,提交按钮的name属性是否确实为add——如果这两个不匹配,代码会直接走到最后一个else分支。

二、cPanel服务器设置调整

  1. 开启错误日志/显示
    在cPanel的PHP设置面板中,临时将display_errors设为On(排查完成后改回Off),或找到error_log文件路径,查看500错误的具体日志内容,这是排查线上问题的核心手段。

  2. 调整上传文件限制
    若上传的图片过大,会导致POST请求失败,触发最后一个else。在cPanel的PHP选项中修改:

  • upload_max_filesize:建议设为10M以上
  • post_max_size:需大于upload_max_filesize,比如设为12M
  1. 统一PHP版本
    对比本地XAMPP与线上cPanel的PHP版本,若版本差异过大(比如本地用PHP7.4,线上用PHP8.2),可能存在语法兼容问题。在cPanel中切换PHP版本至与本地一致后测试。

三、快速测试步骤

  • 在代码最开头添加error_reporting(E_ALL); ini_set('display_errors', 1);,临时开启错误显示,直接查看页面报错信息。
  • 先测试不带图片上传的产品添加,排除文件上传环节的干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:45:18