中的PHP常量包括

中的PHP常量包括,php,include,constants,Php,Include,Constants,我已在配置文件中将我的站点的根定义为常量: define('SITE_ROOT', 'http://folder/site/home'); define('DIR_ROOT', dirname(__FILE__)); // DIR_ROOT points to where the config is 然后我尝试在include字符串中使用该常量,但它似乎不起作用: <? include (SITE_ROOT.'/incs/header.php'); ?> 但是,当我使用它来

我已在配置文件中将我的站点的根定义为常量:

define('SITE_ROOT', 'http://folder/site/home');
define('DIR_ROOT', dirname(__FILE__)); // DIR_ROOT points to where the config is
然后我尝试在include字符串中使用该常量,但它似乎不起作用:

<? include (SITE_ROOT.'/incs/header.php'); ?>

但是,当我使用它来包含图像时,效果很好:

<img src="<?= SITE_ROOT ?>/img/banner.png"/>
/img/banner.png/>

我遗漏了什么?

这是因为
包含
使用的是本地文件系统路径,而不是URL。即使您通过适当的配置启用通过HTTP包含文件(这通常是一个坏主意,并且存在很大的安全风险),您仍然会遇到其他问题

您要做的是在配置文件中定义另一个常量:

define('SITE_ROOT', 'http://folder/site/home');
define('DIR_ROOT', dirname(__FILE__)); // DIR_ROOT points to where the config is
然后

<? include (DIR_ROOT.'/incs/header.php'); ?>

顺便说一句,您永远不应该在HTML.Your
/img/banner.png/>
请注意,上述内容仍然不正确,因为的前三个参数始终应明确指定。由于这很麻烦,在实践中,您会使用自己的函数包装对它的调用,该函数也有一个很好的短名称(这是一个例外情况,其中一个字符名称是一个好主意)