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

Ubuntu20.04 apache2环境下PHP不显示错误且POST请求失效问题

修复PHP错误不显示问题

Ubuntu 20.04 官方源安装的PHP默认关闭了页面错误输出,先开启错误显示定位根因:

  • 找到apache2对应的php.ini配置文件,路径通常为/etc/php/[PHP版本号]/apache2/php.ini,例如PHP7.4对应路径为/etc/php/7.4/apache2/php.ini
  • 修改配置项如下:
    display_errors = On
    display_startup_errors = On
    error_reporting = E_ALL
    
  • 重启apache2生效配置:sudo systemctl restart apache2
    修改后重新访问页面即可看到具体报错提示。

排查POST请求无法正常工作的常见原因

从你提供的代码逻辑来看,优先排查以下几类问题:

1. 日志目录权限不足

你的代码需要写入../logs/目录下的文件,apache2默认运行用户为www-data,需要给目标目录开放对应权限:

  • 进入站点根目录的上级目录,执行权限修改命令:
    sudo chown -R www-data:www-data logs/
    sudo chmod -R 755 logs/
    

2. 请求解析异常

如果开启错误后提示Undefined array key "door"/Undefined array key "id"类报错,说明PHP没有正常解析到POST参数:

  • 检查ESP-12f发起请求时是否设置了正确的请求头,需要携带Content-Type: application/x-www-form-urlencoded才能被$_POST全局变量正常解析
  • 可临时在代码顶部添加调试代码验证参数接收情况:
    var_dump($_POST);
    exit;
    
    用curl或Postman模拟POST请求提交参数,即可确认参数传递链路是否正常。

3. 跨域或模块未启用

  • 若为跨域请求,需要在PHP代码顶部添加CORS头配置:
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: POST');
    header('Access-Control-Allow-Headers: Content-Type');
    
  • 确认apache2必要模块已开启,执行命令:
    sudo a2enmod rewrite headers
    sudo systemctl restart apache2
    

如果调整后仍有问题,可根据开启错误后输出的具体报错信息进一步定位问题点。

内容的提问来源于stack exchange,提问作者Gerard Jensen Olmos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 08:06:09