为什么使用PHP require_once设置全局根URL失败?

时间:2019-05-17 17:23:32

标签: php

我用以下代码创建了一个名为init.php的文件(该文件包含在每个页面的顶部)

<?php
define('APP_ROOT', 'https://example.com/myapp');
?>

即使在子文件夹中,我也可以在传统链接中成功回显APP_ROOT,如下所示:

<a href="<?php echo APP_ROOT ?>/subfolder/test.php">linktext</a>

我不能做的是将常量与PHP Require一起使用,而不是用于根文件或子文件夹中的文件,如下所示

<?php require_once(APP_ROOT . '/test.php') ?>

它返回以下错误消息:

Fatal error: require_once(): Failed opening required 'https://example.com/myapp/test.php' (include_path='.:/usr/local/php56/pear') in...

是否甚至可以将常量与require或include语句一起使用?如果是这样,不胜感激

1 个答案:

答案 0 :(得分:0)

如果您的代码在具有不同环境(脚本运行的位置)的多台服务器上运行,则可能对您有用:

  • 请勿提供绝对路径以包含服务器上的文件。
  • 动态计算完整路径(绝对路径)

提示
使用dirname( FILE )和随后对其自身的调用的组合,直到到达'/index.php'的主页为止。然后,将此变量(包含路径)附加到包含的文件中。

一个典型的例子是:

<?php 
define('__ROOT__', dirname(dirname(__FILE__))); 
require_once(__ROOT__.'/config.php'); 
?> 

https://www.php.net/manual/en/function.require-once.php