工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1740|回复: 9

[已解决]PHP SMATY的一个问题

[复制链接]
发表于 2007-4-4 20:50 | 显示全部楼层 |阅读模式
我在a.php里定义
define(WEB_ROOT,dirname([url=http://{$_SERVER[]http://{$_SERVER['HTTP_HOST']}$_SERVER['SCRIPT_NAME'][/url])."/");

然后
require_once(WEB_ROOT."smarty/libs/Smarty.php");

$SMARTY = new Smarty();

但报错说找不到Smarty这个类.


对php不熟,请各位赐教.

[ 本帖最后由 hjack 于 2007-4-7 01:49 编辑 ]
发表于 2007-4-4 22:22 | 显示全部楼层
smarty放在:
J:\PHP\rdcmphp\rdc_manager\class里
此目录下有:internals
plugins
两个目录
和 smarty.class.php 等文件

J:\PHP\rdcmphp\rdc_manager/config/smarty.php:
  1. <?php
  2. include "class/Smarty.class.php";
  3.         define('__SITE_ROOT',"J:/PHP/rdcmphp/rdc_manager");
  4.     $tpl = new Smarty();
  5.     $tpl->template_dir = __SITE_ROOT . "/templates/";
  6.     $tpl->compile_dir = __SITE_ROOT . "/templates_c/";
  7.     $tpl->config_dir = __SITE_ROOT . "/configs/";
  8.     $tpl->cache_dir = __SITE_ROOT . "/cache/";
  9. ?>
复制代码


需要用smarty的文件只要加一句:
  1. include('configs\smarty.php');
复制代码

就可以了

[ 本帖最后由 iptton 于 2007-4-4 22:23 编辑 ]
回复

使用道具 举报

发表于 2007-4-4 22:32 | 显示全部楼层
下载的smarty应该是只解压出lib目录下的东西就行了
tmplate等目录可自建
回复

使用道具 举报

 楼主| 发表于 2007-4-4 23:39 | 显示全部楼层
但是如果使用
define(WEB_ROOT,'../');
这样是可以的。
回复

使用道具 举报

发表于 2007-4-5 09:45 | 显示全部楼层
一楼的代码可以试试
echo (WEB_ROOT);
看看指向的位置上是否有 smarty.class.php
回复

使用道具 举报

发表于 2007-4-5 10:55 | 显示全部楼层
原帖由 hjack 于 2007-4-4 23:39 发表
但是如果使用
define(WEB_ROOT,'../');
这样是可以的。


好像用相对路径不是很好,在不同的文件里引用,WEB_ROOT就有不同的值
回复

使用道具 举报

 楼主| 发表于 2007-4-5 13:08 | 显示全部楼层
回楼上,
就是因为不想用相对path
所以才想取url路径,
或者还有其它方法来使用绝对路径,IP知道么/
回复

使用道具 举报

发表于 2007-4-5 13:30 | 显示全部楼层
是用网上提供的免费空间?
有个较曲折的办法
   先用一个测试文件echo出自己的文件夹的绝对路径
   再直接显式定义 web_root

其它方法我就不知道了...


因为Apache可以映射不同的盘不同的目录,同一个网站的同一级子目录,可以是不在同一父目录之下(这个师兄应该知道吧..),用$_SERVER[]可能行不通...

之前我接手那一部分代码,也是用$_SERVER这样定义的,但我在APACHE里设了好几个 Alias 那些定义就失效了..
回复

使用道具 举报

 楼主| 发表于 2007-4-6 01:10 | 显示全部楼层
//在一个config.php文件里通过以下代码定义路径,在其它文件里include这个文件即可。
  $NowPathArray = explode("HJACK",str_replace("\\","/",dirname(__FILE__))) ;//强制将windows下"\分隔符"转化为/
  define('WEB_ROOT',$NowPathArray[0]);

  require_once(WEB_ROOT.'/smarty/libs/Smarty.class.php');
  $SMARTY = new Smarty();

ok,解决了。
回复

使用道具 举报

 楼主| 发表于 2007-4-7 02:26 | 显示全部楼层
原帖由 iptton 于 2007-4-5 13:30 发表
是用网上提供的免费空间?
有个较曲折的办法
   先用一个测试文件echo出自己的文件夹的绝对路径
   再直接显式定义 web_root

其它方法我就不知道了...


因为Apache可以映射不同的盘不同的目录,同一个 ...


alias,的确是这样。我现在也是alias另一个目录到htdocs下的。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-5-15 03:41

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表