2012-07-24 101 views
0

我有一个叫做get_header()的函数,它包含一个模板中的头文件(有点像wordpress),它正在工作。在我的函数文件中还定义了一个stylesheetURL()函数,它可以获取模板的样式表url。在函数中包含一个文件

在我的header.php文件(在一个子目录“设计”),我打电话stylesheetURL和PHP说它是未定义的。

这是结构:

pagehandler.php - 处理页面请求。包括'load.php'然后'design/page.php'

load.php - 包括'functions.php'和类。

functions.php - 包含像get_header和stylesheetURL这样的过程函数。 get_header实际上在函数内部包含了header.php文件作为绝对url(http://website.com/design/header.php),但是因为函数没有作用域,它仍然应该调用stylesheeturl函数。

page.php - 调用函数get_header(),回声内容,然后调用get_footer()

header.php - 致电stylesheetURL()。 < <这是它破裂的地方。头文件包含很好,但无法访问任何函数。

这是怎么发生的?

编辑: //设置是一个全局数组,并且如果从header.php或footer.php以外的任何文件中调用,siteURL显示url就好了。

function siteURL() { 
    global $settings; 
    return $settings['site_url']; 
} 

function designURL() { 
    $siteurl = siteURL(); 
    return $siteurl.'/design'; 
} 

function stylesheetURL() { 
    $durl = designURL(); 
    return $durl.'/style.css'; 
} 

function get_header() { 
    $durl = designURL(); 
    require $durl.'/header.php'; 
} 

事实上,如果我改变从get_header()include 'header.php'它按预期工作。

+0

向我们展示功能 – 2012-07-24 10:24:14

+0

您的问题中有很多细节,但不是我们需要帮助解决的问题。为我们粘贴functions.php文件或确保functions.php文件包含在正确的位置,以便可以从“错误页面”访问 – 2012-07-24 10:29:47

回答

0

我想这是因为,你不能通过url需要文件。你需要一个路径,而不是一个URL来需要一个文件。如果您在php.ini中设置了远程文件包含功能,则Include功能正常工作。

+0

不能相信我错过了。干杯的人,我只是使用一个常量,我定义为根路径,而不是使用siteURL函数来预先包含页眉和页脚。所有工作。可恶!它总是小事 – MarcusJohnson 2012-07-24 10:39:25

相关问题