【问题标题】:PHP refer to a file without DOCUMENT_ROOTPHP 引用没有 DOCUMENT_ROOT 的文件
【发布时间】:2016-09-15 18:03:12
【问题描述】:

所以我的问题是,如果我包含一个 php 文件,那么主 php 将是路径。描述的不好,给大家看一些通俗易懂的代码:

这是我的网站:

localhost/mysite/index.php

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

我有一个管理文件夹

localhost/mysite/admin/index.php

我还有一些常用文件

localhost/mysite/common/sayHello.php

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

localhost/mysite/common/helloText.txt

Hey! How you doing?

但它不起作用。主“mysite/index.php”将查找“mysite/helloText.txt”,“mysite/admin/index.php”将查找“mysite/admin/helloText.txt”。

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

你可能会说,我应该在“common/helloText.txt”之前使用一个“/”,但是它会寻找 localhost/common/helloText.txt 而不是 localhost/mysite/...

【问题讨论】:

  • 所以使用/mysite/common/helloText.txt
  • 如果您不想硬编码完整路径,为什么不想使用DOCUMENT_ROOT?这正是它的用途。
  • @Barmar 但我也想在网络上使用它。所以如果我上传最终版本 (mysite.com/),那么它会查找 (mysite.com/mysite/common. .)..
  • 为什么DOCUMENT_ROOT 不为此工作?

标签: php


【解决方案1】:

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

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);

如果您的应用程序移动,您只需修改这两个常量。

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多