解决方案 »

  1.   

    <?php
    require 'lib/core/DBAccess.class';
    require 'lib/core/Object.class';
    require 'action/default/WebBase.class.php';
    require 'action/default/WebLoginBase.class.php';require 'config.php';//print_r($_SERVER);exit;
    $para=array();if(isset($_SERVER['PATH_INFO'])){
    $para=explode('/', substr($_SERVER['PATH_INFO'],1));
    if($control=array_shift($para)){
    if(count($para)){
    $action=array_shift($para);
    }else{
    $action=$control;
    $control='index';
    }
    }else{
    $control='index';
    $action='main';
    }
    }else{
    $control='index';
    $action='main';
    }
    $control=ucfirst($control);if(strpos($action,'-')!==false){
    list($action, $page)=explode('-',$action);
    }$file=$conf['action']['modals'].$control.'.class.php';if(!is_file($file)) notfound('找不到控制器');
    try{
    require $file;
    }catch(Exception $e){
    print_r($e);
    exit;
    }if(!class_exists($control)) notfound('找不到控制器1');
    $jms=new $control($conf['db']['dsn'], $conf['db']['user'], $conf['db']['password']);
    $jms->debugLevel=$conf['debug']['level'];if(!method_exists($jms, $action)) notfound('方法不存在');
    $reflection=new ReflectionMethod($jms, $action);
    if($reflection->isStatic()) notfound('不允许调用Static修饰的方法');
    if(!$reflection->isFinal()) notfound('只能调用final修饰的方法');$jms->controller=$control;
    $jms->action=$action;$jms->charset=$conf['db']['charset'];
    $jms->cacheDir=$conf['cache']['dir'];
    $jms->setCacheDir($conf['cache']['dir']);
    $jms->actionTemplate=$conf['action']['template'];
    $jms->prename=$conf['db']['prename'];
    $jms->title=$conf['web']['title'];
    if(method_exists($jms, 'getSystemSettings')) $jms->getSystemSettings();//if($jms->settings['switchWeb']=='0'){
    // $jms->display('close-service.php');
    // exit;
    //}if(isset($page)) $jms->page=$page;if($q=$_SERVER['QUERY_STRING']){
    $para=array_merge($para, explode('/', $q));
    }if($para==null) $para=array();$jms->headers=getallheaders();
    if(isset($jms->headers['x-call'])){
    // 函数调用
    header('content-Type: application/json');
    try{
    ob_start();
    echo json_encode($reflection->invokeArgs($jms, $_POST));
    ob_flush();
    }catch(Exception $e){
    $jms->error($e->getMessage(), true);
    }
    }elseif(isset($jms->headers['x-form-call'])){ // 表单调用
    $accept=strpos($jms->headers['Accept'], 'application/json')===0;
    if($accept) header('content-Type: application/json');
    try{
    ob_start();
    if($accept){
    echo json_encode($reflection->invokeArgs($jms, $_POST));
    }else{
    json_encode($reflection->invokeArgs($jms, $_POST));
    }
    ob_flush();
    }catch(Exception $e){
    $jms->error($e->getMessage(), true);
    }
    }elseif(strpos($jms->headers['Accept'], 'application/json')===0){
    // AJAX调用
    header('content-Type: application/json');
    try{

    //echo json_encode($reflection->invokeArgs($jms, $para));
    echo json_encode(call_user_func_array(array($jms, $action), $para));
    }catch(Exception $e){
    $jms->error($e->getmessage());
    }
    }else{
    // 普通请求
    header('content-Type: text/html;charset=utf-8');
    //$reflection->invokeArgs($jms, $para);
    call_user_func_array(array($jms, $action), $para);
    }
    $jms=null;function notfound($message){
    header('content-Type: text/plain; charset=utf8');
    header('HTTP/1.1 404 Not Found');
    die($message);
    }
      

  2.   

    config.php
    <?php$conf['debug']['level']=5;
    $conf['db']['dsn']='mysql:host=localhost;dbname=kelake';
    $conf['db']['user']='root';
    $conf['db']['password']='123456';
    $conf['db']['charset']='utf8';
    $conf['db']['prename']='ssc_';
    $conf['cache']['expire']=0;
    $conf['cache']['dir']='_cache/';
    $conf['url_modal']=2;
    $conf['action']['template']='inc/default/';
    $conf['action']['modals']='action/default/';
    $conf['member']['sessionTime']=15*60;
    error_reporting(E_ERROR &~E_NOTICE);
    ini_set('date.timezone','asia/shanghai');
    ?>
      

  3.   

    你把
    if(!method_exists($jms, $action)) notfound('方法不存在');
    改成
    if(!method_exists($jms, $action)) notfound("$jms::$action 方法不存在");
    再运行看看
      

  4.   

     空白页。if(!method_exists($jms, $action)) notfound('方法不存在');
    改成
    if(!method_exists($jms, $action)) notfound("$action 方法不存在 ");
    再运行
      

  5.   

    不应该少文件啊,是整个打包下来的,
    我传网盘上了,帮我看下。少什么?谢谢了。
    http://yun.baidu.com/s/1eQxelqE