php程序安装错误
别人的网站可以正常显示验证码,我和他是一样的程序,我安装后提示 【方法不存在】。
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
自己解决了。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

PHP中有四种主要错误类型:1.Notice:最轻微,不会中断程序,如访问未定义变量;2.Warning:比Notice严重,不会终止程序,如包含不存在文件;3.FatalError:最严重,会终止程序,如调用不存在函数;4.ParseError:语法错误,会阻止程序执行,如忘记添加结束标签。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

HTTP请求方法包括GET、POST、PUT和DELETE,分别用于获取、提交、更新和删除资源。1.GET方法用于获取资源,适用于读取操作。2.POST方法用于提交数据,常用于创建新资源。3.PUT方法用于更新资源,适用于完整更新。4.DELETE方法用于删除资源,适用于删除操作。

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

箭头函数在PHP7.4中引入,是短闭包的简化形式。1)它们使用=>运算符定义,省略function和use关键字。2)箭头函数自动捕获当前作用域变量,无需use关键字。3)它们常用于回调函数和短小计算,提高代码简洁性和可读性。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7
