使用define()设置的常量不在包含的PHP文件中

时间:2013-09-27 23:44:58

标签: php wordpress

我的标题中包含此代码

<?php 
    define('RELPATH','http://www.saint57records.com/');
    include_once(RELPATH.'sidebar.php'); 
?>

以及侧栏中的示例代码行

<a href="/"><img style="margin:10px;" src="<?php print RELPATH;?>images/logo.png" width="60px"/></a>

但是当它到达页面时,它正确地包含了文件,但文件中的所有链接只打印RELPATH而不是像这样的web url

<a href="/"><img style="margin:10px;" src="RELPATHimages/logo.png" width="60px"/></a>

它在我的网站的其他页面上工作正常,而不是在Wordpress内部。有谁知道可能导致这个问题的原因?

1 个答案:

答案 0 :(得分:1)

简短的回答是提供RELPATH的文件系统路径,而不是Web URL。

答案很长,当您使用Web URL包含PHP文件时,PHP文件将被视为外部源。它将被远程调用,在它自己的进程中执行,并返回结果。先前定义的常量不能在此远程资源中生效。

如果http://www.saint57records.com/位于不同的服务器上,则必须以其他方式将RELPATH传递给它,例如通过一个GET变量(在使用之前你必须使用htmlentities()进行清理。)但是,以这种方式包含来自远程服务器的内容并不是一种好的做法。它会降低您的网页速度,因为它会产生昂贵的网络请求。如果目标服务器关闭,您的页面将超时。