标题: 多站点公用zf的问题
dcboy
新手上路
Rank: 1



UID 649
精华 0
积分 0
帖子 1
翻译 0
原创 0
阅读权限 10
注册 2007-12-16
状态 离线
发表于 2008-1-5 15:50  资料  短消息  加为好友 
多站点公用zf的问题

最近发现了一个问题
就是怎样能多个站点 用一个zf

我的目录规划是这样的
\
  app\
      models\
            --这个目录放一些数据库操作表的类
      modules\
             www.a.com\
                         default\
                               controllers\
                                        IndexController.php
             www.b.com\
                        default\
                                controllers\
                                        IndexController.php
  library\
      Zend\

  www\
       www.a.com\
       www.b.com\


在服务器上的apache分别设置了虚拟主机
分别设置了目录和域名
www.a.com 指向 \www\www.a.com\
www.b.com 指向 \www\www.b.com\

a.com下面的index.php设置如下

PHP代码如下:

<?php
error_reporting
(E_ALL|E_STRICT);
date_default_timezone_set('Asia/Shanghai');

//目录分隔符号
$ds DIRECTORY_SEPARATOR;
//路径分隔符号
$ps PATH_SEPARATOR;
$ABS_ROOT_PATH realpath(dirname(__FILE__));
$REL_ROOT_PATH =  substr($_SERVER['PHP_SELF'], strpos($_SERVER['PHP_SELF'],'/index.php'));

set_include_path('.'.PATH_SEPARATOR.'../../library'
    
.PATH_SEPARATOR.'../../app/models/'
    
.PATH_SEPARATOR.get_include_path());

require(
'Zend/Loader.php');

//自动加载类
function __autoload($class){
    
Zend_Loader::autoload($class);
}

//数据库配置
$dbParams = new Zend_Config_Ini('../../config/database.ini','SysDB');
$db Zend_Db::factory($dbParams->adapter,$dbParams->toArray());
//$db->query("set names {$dbParams->charset};");
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db',$db);


//SMARTY配置
$smartyParams = new Zend_Config_Ini('../../config/smarty.ini''Smarty');
$smarty = new Custom_View_Smarty($smartyParams->toArray());
Zend_Registry::set('smarty',$smarty);

//全局定义
$sysinfoParams = new Zend_Config_Ini('../../config/global.ini','SysInfo');
Zend_Registry::set('sysinfo',$sysinfoParams->toArray());

//初始控制器
$frontController Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory(array(
      
'default' => '../../app/modules/www.a.com/default/controllers'
));



$frontController->addModuleDirectory('../../app/modules');
$frontController->setParam('noViewRenderer',true); 
$frontController->setBaseUrl($REL_ROOT_PATH);

try{
    
$frontController->dispatch();
}catch(
Zend_Controller_Dispatcher_Exception $e){
    
$frontController->getResponse()->setHttpResponseCode(404);
    
$frontController->getResponse()->__toString();
}

unset(
$db);
unset(
$smarty);
?>


b.com的index.php如下

PHP代码如下:
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Asia/Shanghai');

//目录分隔符号
$ds DIRECTORY_SEPARATOR;
//路径分隔符号
$ps PATH_SEPARATOR;
$ABS_ROOT_PATH realpath(dirname(__FILE__));
$REL_ROOT_PATH =  substr($_SERVER['PHP_SELF'], strpos($_SERVER['PHP_SELF'],'/index.php'));

set_include_path('.'.PATH_SEPARATOR.'../../library'
    
.PATH_SEPARATOR.'../../app/models/'
    
.PATH_SEPARATOR.get_include_path());

require(
'Zend/Loader.php');

//自动加载类
function __autoload($class){
    
Zend_Loader::autoload($class);
}

//数据库配置
$dbParams = new Zend_Config_Ini('../../config/database.ini','SysDB');
$db Zend_Db::factory($dbParams->adapter,$dbParams->toArray());
//$db->query("set names {$dbParams->charset};");
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db',$db);


//SMARTY配置
$smartyParams = new Zend_Config_Ini('../../config/smarty.ini''Smarty');
$smarty = new Custom_View_Smarty($smartyParams->toArray());
Zend_Registry::set('smarty',$smarty);

//全局定义
$sysinfoParams = new Zend_Config_Ini('../../config/global.ini','SysInfo');
Zend_Registry::set('sysinfo',$sysinfoParams->toArray());

//初始控制器
$frontController Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory(array(
      
'default' => '../../app/modules/www.b.com/default/controllers'
));



$frontController->addModuleDirectory('../../app/modules');
$frontController->setParam('noViewRenderer',true); 
$frontController->setBaseUrl($REL_ROOT_PATH);

try{
    
$frontController->dispatch();
}catch(
Zend_Controller_Dispatcher_Exception $e){
    
$frontController->getResponse()->setHttpResponseCode(404);
    
$frontController->getResponse()->__toString();
}

unset(
$db);
unset(
$smarty);


问题是无论访问a.com还是b.com他们的indexAction都是同一个,我想不同的域名指向不同的控制器,请问怎么解决啊谢谢
我的QQ 242772
msn:dcboy@live.com

顶部
Cykit
新手上路
Rank: 1



UID 729
精华 0
积分 0
帖子 15
翻译 0
原创 0
阅读权限 10
注册 2008-1-14
状态 离线
发表于 2008-1-14 22:05  资料  短消息  加为好友 
没必要,徒增复杂度,多拷贝一份ZF就行了,又占用不了多少空间。

似乎官方也是这么建议的,还是我在别的地方看到的。忘了。

顶部
 


PHPEye开源社区


当前时区 GMT+8, 现在时间是 2008-12-5 09:26

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.030631 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - PHPEye开源社区 - Archiver