他の人のウェブサイトでは正常に認証コードが表示されますが、私も彼と同じプログラムをインストールしましたが、[メソッドが存在しません] と表示されました。
if(!class_exists($control)) notfound('コントローラー 1 が見つかりません');
$jms=new $control($conf['db']['dsn'], $conf[ 'db ']['ユーザー'], $conf['db']['パスワード']);
$jms->debugLevel=$conf['デバッグ']['レベル'];
if(! $jms, $action)) notfound('メソッドが存在しません');
$reflection=new ReflectionMethod($jms, $action);
if($reflection->isStatic()) notfound('呼び出しは許可されていません変更されたメソッド');
if(!$reflection->isFinal()) notfound('最終的に変更されたメソッドのみを呼び出すことができます');
http://vip4.zrd-w.com これは他の人の Web サイトです
同じプログラムでデータベース接続も正しいので、プログラムの問題ではないのかもしれませんが、PHPは全く分からないので、これが原因なのか分かりません?
以下は完全なコードです。
19e1b94aec04a4ba063e594db29d5099debugLevel=$conf['デバッグ']['レベル']
if (!method_exists( $jms, $action)) notfound('メソッドが存在しません');
$reflection=new ReflectionMethod($jms, $action)) notfound('静的ではない変更されたメソッドの呼び出しが許可されています');
if(!$reflection->isFinal()) notfound('最終的に変更されたメソッドのみを呼び出すことができます');
$jms->controller=$control; >action=$action;
$jms->charset=$conf['db']['charset']
$jms->cacheDir=$conf['cache']['dir'] ;
$jms->setCacheDir($conf['cache']['dir']);
$jms->actionTemplate=$conf['action']['template'];
$jms-> =$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') ;
// 終了
//}
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(); isset($jms->headers['x-call'])){
// 関数呼び出し
header('content-Type: application/json');
try{
ob_start();リフレクション->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(){
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, $para)) 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'); $message);
}
この問題の解決を手伝ってください、ありがとう。
ディスカッションへの返信 (解決策)
<?phprequire '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);}
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');?>
に変更します。
if(!method_exists($jms, $action)) notfound("$jms::$action メソッドが存在しません");
もう一度実行して確認してください
if(!method_exists($jms, $action)) notfound("$jms::$action メソッドが存在しません"); に変更します
もう一度実行して確認します
空白のページ。