php 的eval解析失败与500 Internal Server Error

在使用php的eval解析代码时,会出现二种极端的可能.

第一种是解析失败,就会导致输出500 Internal Server Error;如果同时这里使用jquery获取响应话,会出现error和success都无法捕捉到内容,在firebug中会看到这个请求是红的;

对于这种情况可以使用下面的代码来进行提示,新的php版本好像在这种情况下,并不会输入500 Internal Server Error的.而在旧的版本,使用try+catch和@都无法防止输出500 Internal Server Error;


会在firebug中看到响应头如下:


响应头信息格式化头信息

HTTP/1.1 500 Internal Server Error
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.15
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/html; charset=UTF-8
X-Cacheable: NO: obj.status
X-Cacheable-status: 500
Content-Length: 2391
Date: Mon, 06 Aug 2012 07:33:16 GMT
X-Varnish: 630534718
Age: 0
Via: 1.1 varnish
Connection: keep-alive
X-Cache: MISS


//这种情况如 array((); 这样的拼写就会导致.

if (false === @eval('@$obj = ' .$row['post'].';') ) {
        echo "";
    }


第二种情况是解析出错,直接终止解析代码;

在这里没有遇到,就没有例子了.



你可能感兴趣的:(php 的eval解析失败与500 Internal Server Error)