D:\xampp\htdocs\MyLocalShop\one.php:<?php
/**
 * index.php MyLocalShop 入口
 * 
 * @copyright (C)2013-2014 MyLocalShop
 * @license http://www.baidu.com/
 * @lastmodify 2013-01-07
 */
session_start();
header('Cache-control: private'); /**
 * 网站根目录路径(d:\xampp\htdoc\MyLocalShop\)
 * @var string
  */
define('LOCALSHOP_PATH', str_replace('\\', '/', dirname(__FILE__).DIRECTORY_SEPARATOR));
$_SESSION['LOCALSHOP_PATH'] = LOCALSHOP_PATH;
//echo constant('LOCALSHOP_PATH');

require LOCALSHOP_PATH.'base.class.php';
$mls = new MLS();
$url = $mls->Load('front/includes/', 'index.php'); // 一进入网站首先直接进入前台首页
header('Location: '.$url);
//echo LOCALSHOP_PATH.$url;
?>D:\xampp\htdocs\MyLocalShop\front\includes\index.php:<?php
/**
 * 前台页面首页文件
 * @copyright (C) 2013-2014 MyLocalShop
   * @license http://www.baidu.com/
   * @lastmodify 2013-01-07
 */ session_start();
header('Cache-control: private'); define('IN_MLS', true); //require dirname(__FILE__).DIRECTORY_SEPARATOR.'/base.class.php';
require LOCALSHOP_PATH.'/common/common.php';

echo CACHE_PATH;
echo '<br />';
echo LOCALSHOP_PATH;
//echo 342;
?>D:\xampp\htdocs\MyLocalShop\base.class.php:<?php
/**
 * MyLocalShop 基本功能类及配置信息
 * @author Administrator
 *
 */ class MLS {

/**
 * 检查完整目录文件路径是否存在,存在则返回目录文件路径,不存在则返回false
 * @param string $file_url 目录文件组成的完整URL路径
 * @return 存在则返回目录文件路径string,不存在则返回false
 */
private function hasFile($file_url) {
if (file_exists($file_url))
return $file_url;
}



/**
 * __autoload()函数
 * @param string $name 被加载的对象
 * @return none
 */
function __autoload($name) {
require_once $name;
}

/**
 * 检查php版本是否大于5.1并是否支持__autoload()
 * @param none
 * @return 支持返回true,不支持返回false
 */
public static function hasAutoLoad() {
if ((PHP_VERSION >= '5.1') && (function_exists('__autoload')))
return true;
else
return false;
}


/**
 * 自动加载对象
 * @param string $name 被自动加载的对象
 * @return none
 */
public static function AutoLoad($name) {
if (self::hasAutoLoad())
$this->__autoload($name);
}



/**
 * 把指定目录及文件组成一个完整的路径
 * @param string $dir_url 完整目录URL
 * @param string $file 文件
 * @return string 返回完整路径
 */
public function Load($dir_url, $file) {
$url = $this->hasFile($dir_url.$file);
//echo $url;
return $url;
}


}
?>D:\xampp\htdocs\MyLocalShop\common\common.php:<?php
/**
 * 网站的基本配置信息
 */

// 缓存文件夹地址
define('CACHE_PATH', LOCALSHOP_PATH.'\caches'.DIRECTORY_SEPARATOR);
// 系统开始时间
define('SYS_START_TIME', microtime());
// 当前访问的主机名
define('SITE_URL', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''));
// 主机协议
define('SITE_PROTOCOL', isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://');
// 本地时差设置
if ((PHP_VERSION >= '5.1') && (function_exists('date_default_timezone_set')))
date_default_timezone_set('PRC');// 前台
define('FRONT_CSS', LOCALSHOP_PATH.'front/css'.DIRECTORY_SEPARATOR);
define('FRONT_IMG', LOCALSHOP_PATH.'front/images'.DIRECTORY_SEPARATOR);
define('FRONT_INCLUDES', LOCALSHOP_PATH.'front/includes'.DIRECTORY_SEPARATOR);
define('FRONT_INCLUDES_LIBS', LOCALSHOP_PATH.'front/includes/libs'.DIRECTORY_SEPARATOR);
define('FRONT_JS', LOCALSHOP_PATH.'front/js'.DIRECTORY_SEPARATOR);// 后台
define('ADMIN_CSS', LOCALSHOP_PATH.'admin/css'.DIRECTORY_SEPARATOR);
define('ADMIN_IMG', LOCALSHOP_PATH.'admin/images'.DIRECTORY_SEPARATOR);
define('ADMIN_INCLUDES', LOCALSHOP_PATH.'admin/includes'.DIRECTORY_SEPARATOR);
define('ADMIN_INCLUDES_LIBS', LOCALSHOP_PATH.'admin/includes/libs'.DIRECTORY_SEPARATOR);
define('ADMIN_JS', LOCALSHOP_PATH.'admin/js'.DIRECTORY_SEPARATOR);
?>运行时
浏览器地址栏:http://localhost/MyLocalShop/front/includes/index.php
显示错误:Warning: require(LOCALSHOP_PATH/common/common.php): failed to open stream: No such file or directory in D:\xampp\htdocs\MyLocalShop\front\includes\index.php on line 15Fatal error: require(): Failed opening required 'LOCALSHOP_PATH/common/common.php' (include_path='.;D:\xampp\php\PEAR;D:\xampp\php\Smarty\libs;D:\xampp\php\magpierss ; PHP's default setting for include_path is .') in D:\xampp\htdocs\MyLocalShop\front\includes\index.php on line 15这个错误怎么解决?怎么获得LOCALSHOP_PATH的内容?functionstringurlpathautoload

解决方案 »

  1.   

    $_SESSION['LOCALSHOP_PATH'].'/common/common.php'
      

  2.   

    LOCALSHOP_PATH是一个常量看你的index.php在使用这个常量之前从未定义过,所以会出错.因此看看你的代码里有没有定义过这个常量,然后把它require进来才能使用 
    session_start();
        header('Cache-control: private');
     
        define('IN_MLS', true);
     
        //require dirname(__FILE__).DIRECTORY_SEPARATOR.'/base.class.php';
        require LOCALSHOP_PATH.'/common/common.php';
      

  3.   

    那么如果在index.php中require one.php的话会运行到one.php的header()中导致错误;但若把LOCALSHOP_PATH定义在common.php中的话,当我想index.php中导入这个常量的话不就要
    require 'D:/xampp/htdocs/MyLocalShop/common/common.php';
    这样子,这可是涉及到移值性的问题的喔!就像ecshop那些那样被其他人下载到他们自己的电脑后这个语句就会出现问题的喔那么应该怎么办呢?
      

  4.   


    如果不用session呢?因为每次都用session的话不就common.php中的所有常量都必须session了!那不就导致性能问题嘛(因为session太多了)!所以我不想用session cookie那些,也不用数据库,那应该怎么办呢?
      

  5.   

    common.php中没有定义 LOCALSHOP_PATH,你需要在这里定义LOCALSHOP_PATH,这样common.php没问题了。如果其它文件要用LOCALSHOP_PATH 就引入common.php不就行了
      

  6.   


    这我知道,就是说如果把LOCALSHOP_PATH放在common.php中定义的话,不就以后每个需要LOCALSHOP_PATH的文件都必须require 'D:/xampp/htdocs/MyLocalShop/common/common.php'嘛!!那涉及到移值性的问题,就像ecshop那些那样被其他人下载到他们自己的电脑后这个语句就会出现问题的喔(因为别人保存这个网站的路径不一定在D:/xampp/htdocs的喔),如果保存在C:/的话那这个require语句不就找不到common.php咯
      

  7.   

    不用session就传参啰
    关键是  require LOCALSHOP_PATH.'/common/common.php';  这句里面的常量没定义
    定义是在跳转之前的
      

  8.   

    php的引用有絕對引用和相對引用,你難道不會用相對引用嗎?