服务器安装使用的是oneinstack一键安装包,lnmpa(Linux + Nginx+ MySQL+ PHP+ Apache)https://oneinstack.com/
程序运行的是discuz3.2, http://www.liuxuesheng8.com/
在发表新帖子,提交时,出现错误,提示:
This page isn’t working
bbs.liuxuesheng8.com is currently unable to handle this request.
HTTP ERROR 500
但是内容确实已经写到数据库里,只是卡在上面图片所示页面,重新打开网站页面,发表的新帖子已经提交,很是奇怪。
然后查看服务器日志,只是在access_log里面出现,post 500错误,而在apache里面和openresty的日志里面都没有相应的错误日志,这种情况下在哪里查找500原因呢???
- - [29/Apr/2017:18:27:03 +0800] "POST /forum.php?mod=post&action=newthread&fid=70&extra=&topicsubmit=yes HTTP/1.0" 500 -
显然你这个错误是跟nginx相关的。
nginx出现500,一般有以下几种情况:
硬盘空间满了(df -lh查看磁盘占用情况,nginx所在目录已占用100%)。nginx如果开启了access log,在不需要的情况下,最好关闭access log。access log会占用大量硬盘空间。
nginx配置文件错误
配置rewrite的时候,有些规则处理不当会出现500错误,检查下自己的rewrite规则。如果配置文件里有些变量设置不当,也会出现500错误,比如引用了一个没有值的变量。
并发问题,服务器扛不住
文件打开句柄太小,在做服务器并发测试的时候,因为服务器压力大,我们经常看到一部分请求是500,那么原因就是nginx可以使用的文件句柄太小,每个请求都会占用一个句柄。
打开apache和php的错误输出。
apache, nginx, php错误日志里面,没有与这个post500错误相关的,,,很奇怪
3楼说的有可能
因为配置了rewrite功能,有时候,打开帖子,rewrite不起效,还是动态网页,再次点击这个链接后,rewrite才起效。。。我猜想的原因是在post提交后,链接要rewrite,而此时服务器不能rewrite,从而卡在了相应的页面上,但数据是已经写到了数据库中的
php 代码可能有报错,但又没有配置错误输出也会报500错误。可以试一下修改配置将php报错以log的方式输出。