去访问一个纯html文件,理论上应该是不会访问到else里面的内容,结果服务器在这一行$api = new $classname;报错,而浏览器则是在加载完<head>标签中的js之后,在<body>标签最后的js报出500错误index大面如下// 分析uri$path = $_SERVER['REQUEST_URI'];$paramerters = explode('/',$path);//加载核心类 初始化//require_once DIR.'/autoload/_Autoload.php';$len = count($paramerters) - 1;if(preg_match('/\.html$/',$path)){ // 纯html $page = file_get_contents("./view/{$paramerters[$len]}"); echo $page;}else{ //api接口 $classname = $paramerters[2]; $functioname = $paramerters[3]; //自动加载类 if(!preg_match('/\.html$/',$path)){ define('DIR',dirname(__FILE__)); require_once DIR.'/autoload/Autoload.php'; $res = spl_autoload_register("\\Core\\Autoload::_autoload"); $api = new $classname; $api->{$functioname}(); }}
3 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
突然想起来,是浏览器拿到html之后,会根据里面内容再次请求js等文件。之后请求js文件的的request(中文有点拗口)就会直接重定向到index.php,正则就没有匹配成功,报500错误。
暮色呼如
TA贡献1853条经验 获得超9个赞
if(preg_match('/\.html$/',$path))
去除html后的$,$表示以.html结尾,如果REQUEST_URI是xxx.html?a=1&b=2便无法通过正则匹配
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
因为$api = new $classname;有语法错误吧。应该写成:$api = new $classname();
php要先编译再运行,编译时有语法错误就终止输出了。
添加回答
举报
0/150
提交
取消
