昨天在开发的时候遇到一个问题,form entype=“multipart/form-data” 表单提交时显示500错误。
开始我以为是php代码问题,我检查了一遍代码,没有问题。 之后设置断点,依旧报错500,这就说明断点代码就没有执行,表单提交动作根本没有触发后端的php代码。 于是,我将注意力放在了php配置上,反复修改配置调试,而且重装了php依然无效。 最后在查看php错误日志的时候,顺便也看了下nginx的错误日志,这才发现问题所在
2016/12/19 10:49:22 [crit] 31870#0: *197 open() "/var/lib/nginx/tmp/client_body/0000000008" failed (13: Permission denied), client: XXX, server:XXX, request: "POST /admin/XXX.php?act=post HTTP/1.1", host: "XXX", referrer: "http://host/admin/XXXphp?act=post"
从这行报错可以看出,nginx在接收提交数据时,请求失败,因为权限不够被拒绝。 再来到/var/lib/文件下在,看到该文件夹下的 nginx 的权限为
drwx------ 3 www apache 4096 Apr 4 00:30 nginx
所以将该文件夹的权限修改为755,问题就解决了。
反思:在解决问题的过程中,没有及时查看错误日志,查找具体原因,一味凭猜测在调试修改,结果花费了很多时间。