一个PHP文件的透过HTTP分发的错误

同事写一个服务安装脚步,有一个PHP的配置文件要在安装时分发,脚步里是用wget来获取这个文件的,不幸的是Apache加载了mod_php,所以分发的文件是那个PHP文件被modphp解析过的结果,而这种情况下那个PHP文件的执行大多会导致500错误,被分发的文件要么是空要么是Apache的500错误内容或php display error的内容。

服务安装后又匮乏验证机制,出现这种情况就不为人知,真正出事了才会发现。其实出这个问题是有一定历史原因的,原来配置文件的分发是走s3的,到了国内呢,s3服务变的不可用,同时受网络的限制也就不用s3了,采用HTTP的服务代替了s3,但是一些安装脚本的写法延续了s3时代的写法,只不过以前分发的都是conf之类的文件,这次是个php文件,所以出事了。

避免这个问题的方法有很多,如:

  • 提供文件分发的HTTP服务不加载解析模块
  • 配置文件的分发一律走文件分发机制,如puppet等。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.