PHP引用没有DOCUMENT_ROOT的文件

时间:2016-09-15 18:03:12

标签: php

所以我的问题是,如果我包含一个php文件,主要的php将是路径。我无法很好地描述它,所以让我向您展示一些易于理解的代码:

这是我的网站:

  

本地主机/ mysite的/ index.php的

<?php
    include('common/sayHello.php');
?>

我有一个管理文件夹

  

本地主机/ mysite的/管理/ index.php的       

我有一些常见文件

  

本地主机/ mysite的/普通/ sayHello.php

<?php
    $text = file_get_contents(helloText.txt);
    echo($text);
?>
  

本地主机/ mysite的/普通/ helloText.txt

Hey! How you doing?

但它不起作用。主要&#34; mysite / index.php&#34;将寻找&#34; mysite / helloText.txt&#34;,以及&#34; mysite / admin / index.php&#34;将寻找&#34; mysite / admin / helloText.txt&#34;。

我可以正确引用helloText文件,而不使用DOCUMENT_ROOT吗?有没有办法在不改变URL路径的情况下包含文件?

你可能会说,我应该使用&#34; /&#34;在&#34; common / helloText.txt&#34;之前,但它会查找localhost / common / helloText.txt而不是localhost / mysite /...

1 个答案:

答案 0 :(得分:0)

为此,我通常在配置中定义两个常量:

define('PATH_ROOT', '/var/www/vhosts/example.com/app/');
define('HTTP_ROOT', 'http://example.com/');

现在,我可以使用PATH_ROOT轻松定义应用程序中的绝对路径,并在HTTP_ROOT的网站内轻松定义绝对路径。

那么我们有类似的东西:

$myFile = 'some/path/foo.txt';
// write file to: /var/www/vhosts/example.com/app/some/path/foo.txt
file_put_contents('Hello world!', PATH_ROOT . $myFile);
// generate link to: http://example.com/some/path/foo.txt
sprintf('<a href="%s">Click me!</a>', HTTP_ROOT . $myFile);

如果您的应用程序移动了所有您需要做的就是修改这两个常量。