当前位置 主页 > iis相关 >

关于IIS+PHP出现“500 - 内部服务器错误”的问题解决

时间: 2018-09-14 15:07 栏目:iis相关

  借着腾讯云的活动笔者成功租赁了一台系统为WindowsServer2012R2的服务器,目前服务端构成是IIS+PHP+MySQL。不过最近在使用PHP操作MySQL数据库的时候遇到了问题。有时会出现“500-内部服务器错误”,如下图:
 
  但是问题来了,实际上PHP代码在本地测试的时候(Windows10+Apache+PHP+MySQL)却正常,没有报错。如下图,同样的代码和相同的参数,访问同样的数据库。
 
  看样子是IIS+PHP的组合出了问题。为了解决问题,我们要排除500的错误可能是哪些,根据查阅的资料,笔者首先把IIS本身可能会产生500错误的地方全部进行了排查,比如读写权限等等。那么剩下的问题可能就出在php上面了。进一步查阅资料,有人在之前遇到了类似的情况,最后是通过对PHP工作目录下的php.ini进行参数的修改解决的。php.ini中需要修改的内容如下(修改或者添加):
 
  display_errors=On
 
  error_log="C:\windows\Temp\php-5.x.yy_errors.log"
 
  error_reporting=E_ALL
 
  fastcgi.logging=0
 
  html_errors=On
 
  log_errors=On
 
  笔者按照上面的内容对服务器的php.ini进行了修改,但是出现了新的问题。如图:
 
  500错误终于是没了,然后出现了新的问题,What???PHP什么时候用变量要定义了(扶额)……
 
  只能硬着头皮继续找去掉解决方案,最终找到了两种解决方案:
 
  一、修改php.ini
 
  error_reporting=E_ALL&~E_NOTICE
 
  register_globals=On
 
  这个问题其实主要出在error_reporting的参数,下面的register_globals笔者在php.ini中没有找到(笔者使用的是php7),不添加也没有问题。
 
  二、在php文件的头部添加如下代码
 
  ini_set("error_reporting","E_ALL&~E_NOTICE");
 
  这个方案适合没有php.ini读写权限或者不想进行ini配置的情况,也能够解决问题。
 
  再次访问相同的页面,终于没有500错误和未定义变量的提示了,没有比无报错更让人泪流满面的事情了。
 
缩小 缩小 缩小 缩小