二级目录中使用SpeedPHP框架的问题
发布于:2022-01-17 09:50:54
#1 jake
如果不是在网站根目录使用SpeedPHP框架的应用程序,而是位于某个二级目录,需要设置一下配置,否则spUrl生成的地方将不正确。
在目录内使用SP框架,也就是在非根目录中使用SP框架,需要在应用程序配置中设置:
...
$spConfig = array(
'url' => array(
'url_path_base' => "/您的目录/index.php",
),
);...
设置URL中的url_path_base值,那么spUrl以及应用程序都将按照新的访问路径进行路径转换。
下面举个例子,我们有app1,app2,admin三个目录内分别有独立的应用程序,都使用根目录下的SpeedPHP。那么目录结构如下:(点小图看大图)
上图中我们可以看到,admin程序的配置应该是:
define("SP_PATH","../SpeedPHP");
define("APP_PATH",dirname(__FILE__));
$spConfig = array(
'url' => array(
'url_path_base' => '/admin/index.php',
),
);
require(SP_PATH."/SpeedPHP.php");
其余的app1,app2也是同理。
2009-12-24 16:41:29
#2 setlt
支持楼主
2009-12-25 23:29:39
#3 xiaoguan
太好了,正是我想要的:D,感谢楼主!
2009-12-26 19:30:41
#4 ytze
我照着做了一个,为什么不对呢?
define("SP_PATH","../SpeedPHP");
define("APP_PATH",dirname(__FILE__));
$spConfig = array(
'url'=>array(
'url_path_base'=>'/web/index.php',
),
);
require(SP_PATH."/SpeedPHP.php");
DEBUG信息
---------- Debug PHP ----------
Warning: require(../SpeedPHP/SpeedPHP.php): failed to open stream: No such file or directory in F:\work\web\SpeedAMP\htdocs\web\index.php on line 9
Fatal error: require(): Failed opening required '../SpeedPHP/SpeedPHP.php' (include_path='.;C:\php5\pear') in F:\work\web\SpeedAMP\htdocs\web\index.php on line 9
输出完成 (耗时: 0 秒)
浏览器输出结果:
路由错误,请检查是否存在该函数。
- F:\work\web\SpeedAMP\htdocs\SpeedPHP\SpeedPHP.php on line 83
78.
$GLOBALS['G_SP']["default_action"];
79.
80.
$handle_controller = spClass($__controller, null, $GLOBALS['G_SP']["controller_path"].'/'.$__controller.".php");
81.
// 调用控制器出错将调用路由错误处理函数
82.
if(!is_object($handle_controller) || !method_exists($handle_controller, $__action)){
83.
eval($GLOBALS['G_SP']["dispatcher_error"]);
84.
exit;
85.
}
86.
87.
// 对路由进行自动执行相关操作
88.
spLaunch("router_prefilter");
- F:\work\web\SpeedAMP\htdocs\web\index.php on line 9
4.
$spConfig = array(
5.
'url'=>array(
6.
'url_path_base'=>'/web/index.php',
7.
),
8.
);
9.
require(SP_PATH."/SpeedPHP.php");
2009-12-31 16:08:46
#5 ytze
已解决。
把整理选为utf8_general_ci重新录入但还是提示
Warning: 1265 Data truncated for column 'tb_Name' at row 1
另咨询一个mysql问题:
我用phpmyadmin新建了一个数据表,结构如下,为什么dis_name字段不能输入中文呢?错误代码:
Warning: 1265 Data truncated for column 'tb_Name' at row 1
Warning: 1366 Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'dis_name' at row 1
查询内容时,中文变为乱码
2009-12-31 16:19:08
#6 jake
如果字段内已经有中文,然后改整理字符集的话,会出现这种错误的。这只是警告说原来存的是另一种格式,转换会不好。
我们一般遇到这种情况都是只能导出来,然后再导进去的
2009-12-31 16:42:08
#7 ytze
感谢 jake的帮助
但是第一个问题呢?
我把index.php的第一行
define("SP_PATH", "../SpeedPHP");
改为
define("SP_PATH", "./SpeedPHP");
或者
define("SP_PATH",dirname(__FILE__)."/SpeedPHP" );
都不行
2009-12-31 16:48:33
#8 jake
找找SpeedPHP目录在什么地方吧,或者可以到我们网站下载个最新的。然后再引用进去
2009-12-31 17:21:07
#9 小双
后台index.php可以引用前台index.php里面的数据库调用吗?我写的时候是前台后台都有一个index.php里面的代码页是一样,后台重复前台调用数据库的方法?不知道是不是这样做的
2010-03-13 11:20:01
#10 redguan
感谢 jake的帮助
但是第一个问题呢?
我把index.php的第一行
define("SP_PATH", "../SpeedPHP");
改为
def ...
ytze 发表于 2009-12-31 16:48
如果你的程序不需要移来移去,最好写成绝对形式。
//define("SP_PATH",dirname(__FILE__)."/SpeedPHP");
//define("APP_PATH",dirname(__FILE__));
define("APP_NAME","api"); //APP名称
define("APP_DOMAIN","xxx.com"); //DOMAIN域名
define("ROOT_PATH","d:/htdocs/"); //根路径
define("APP_DIR",APP_NAME.'.'.APP_DOMAIN); //DOMAIN域名
define("STYLE_PATH",'http://api.xxx.com/tpl/'.APP_DIR); //CSS、JS、IMG文件URL路径
define("SP_PATH",ROOT_PATH."/FrameWork"); //SP路径
define("APP_PATH",ROOT_PATH."/".APP_DIR); //APP路径
define("TPL_PATH",ROOT_PATH.'/tpl/'.APP_DIR); //模版目录
define("TMP_PATH",ROOT_PATH.'/tmp/'.APP_DIR); //编译目录
define("CACHE_PATH",ROOT_PATH.'/cache/'.APP_DIR); //缓存目录
2010-03-13 11:29:31
#11 yuanjianhua
哈哈,厉害,我正想知道怎么做呢
2010-03-17 10:26:50
#12 yuanjianhua
这里有个问题,就是后台model 和 index.php和前台的都是一样的,但是如果在二级,也需要建立一个控制器,一个model,和index。php吗?
2010-03-24 16:53:34
#13 jake
一般来是,sp提倡的重用,主要是model类的重用,也就是前后台都可以用统一的model。
前后台共用同一文件夹的model类,可以在应用程序配置中设置 'model_path'
http://speedphp.com/manual/spconfig当然,其他的配置,可以在index.php载入同一个config.php(参见winblog),然后在各自的$spConfig['model_path'] = "model的路径",就可以了。
2010-03-24 17:17:00
#14 yuanjianhua
回复 13 jake 还是不大明白是怎么做的!
2010-03-25 09:52:06
#15 yuanjianhua
回复 14 yuanjianhua 明白了怎么做了
2010-03-25 10:44:05
#16 yangkun1
可以是可以了。不过 member/controller 下的 main.php
class main extends spController
{
function index(){
$this->display("default/index.html");
}
}
?>
调用模板不成功,模板文件是放到
2010-05-07 01:55:25
#17 jake
可以是可以了。不过 member/controller 下的 main.php
调用模板不成功,模板文件是放到 ...
yangkun1 发表于 2010-5-7 01:55
那么,有没有试过$this->display("index.html");
或者是
$this->display("member/default/index.html");
多试试吧
2010-05-07 09:19:43
#18 yangkun1
谢谢JAKE
2010-05-07 10:55:22
#19 hanyegudeng
为什么我调用模板就是不成功,也没有错误提示,就是啥都没有显示。
main中的index
$guestbook = spClass('guestbook');
$this->results = $guestbook->findAll();
$this->display("blue/index.html");
index.php中
'url' => array(
'url_path_base' => '/test/index.php',
),
2011-05-18 11:19:30
#20 jake
为什么我调用模板就是不成功,也没有错误提示,就是啥都没有显示。
main中的index
$guestbook = spClass('g ...
hanyegudeng 发表于 2011-5-18 11:19
建议直接下载本站留言本例子来学习。
2011-05-18 12:31:22
#21 hanyegudeng
建议直接下载本站留言本例子来学习。
jake 发表于 2011-5-18 12:31
谢谢jake的回复。有可能是我机器配置的问题吧。我用的是mac的电脑,我把我写的那些代码放到windows下面是ok的。
2011-05-19 09:28:16
#22 dongfan
这讨论有点高深了,还在学习中
2013-12-31 21:36:01
#23 wbq-wang
二级目录 加'url_path_info'=> TRUE, <{include file="header.html"}>就不能正确显示,header.html不能正确显示
2014-10-25 17:05:25