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全局变量正常解析 - 可临时在代码顶部添加调试代码验证参数接收情况:
用curl或Postman模拟POST请求提交参数,即可确认参数传递链路是否正常。var_dump($_POST); exit;
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
相关产品推荐
相关产品推荐

