作者:joyjz | 来源:互联网 | 2014-05-27 15:53
今天一个客户在使用vps安装discuz的时候老是出现http500错误,最初以为客户的程序有问题,因为一般报http500都是程序出错导致服务器报500的错误,但他坚持说是官网下载的,很奇怪,检查了探针,环境也是正常的,看了下文件夹权限也是正常的,没办法只有一步
今天一个客户在使用vps安装discuz的时候老是出现http500错误,最初以为客户的程序有问题,因为一般报http500都是程序出错导致服务器报500的错误,但他坚持说是官网下载的,很奇怪,检查了探针,环境也是正常的,看了下文件夹权限也是正常的,没办法只有一步步跟踪程序,跟踪了几个文件之后,发现是出现require的地方报错了,奇怪,是没找到文件么?但文件确实是存在的,又在网上查阅了require引起http500的种种可能,最后终于找到了解决办法!
问题的原因如下:
客户在安装discuz的时候,把discuz的安装目录放在了磁盘根目录下,如D:\,而D盘根目录又没有赋予相应的权限,所以require(./xxx.php)这样的语句执行的时候,就因为权限的问题发生了http500的错误,找到了问题的原因,我就将客户的网站放到D:\wwwroot\网站目录,这样放置之后对wwwroot设置读取权限,这样设置后问题得到解决。
最后总结这个问题的原因在于discuz和wordpress等程序的index.php文件中都用到了require(./xxx.php)这样的语句,而程序放在IUSER_用户没有读取权限的目录下会出现这样的权限问题。
解决办法1
把里面的require(./xxx.php)改成 require(xxx.php)。
解决办法2
给网站的上级目录赋予IUSER_用户读权限。