php程式安裝錯誤

來源:互聯網
上載者:User
別人的網站可以正常顯示驗證碼,我和他是一樣的程式,我安裝後提示 【方法不存在】。




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修飾的方法');

http://vip4.zrd-w.com 這是別人的網站

既然是一樣的程式,資料庫連接也正確,我估計可能不是程式的問題,不過我對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);
}
求高手幫忙解決下,謝謝。


回複討論(解決方案)

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

 

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

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


空白頁。



if(!method_exists($jms, $action)) notfound('方法不存在');
改成
if(!method_exists($jms, $action)) notfound("$action 方法不存在 ");
再運行

顯然是少拷貝了檔案或位置不對

不應該少檔案啊,是整個打包下來的,
我傳網盤上了,幫我看下。少什嗎?謝謝了。
http://yun.baidu.com/s/1eQxelqE

自己解決了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.