>  기사  >  백엔드 개발  >  php程序安装错误

php程序安装错误

WBOY
WBOY원래의
2016-06-23 13:58:411489검색

别人的网站可以正常显示验证码,我和他是一样的程序,我安装后提示 【方法不存在】。




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);
}
求高手帮忙解决下,谢谢。


回复讨论(解决方案)

<?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('方法不存在');
改成
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

自己解决了。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.