如何使用php在域目录内的public_html外部调用文件

时间:2018-09-05 13:37:53

标签: php cpanel

我有一个具有子域的域。我想在子域文件夹中调用文件,但是显然我的子域文件夹在public_html目录之外。这是我尝试过的,但没有任何反应。subdomain文件夹为subdomain。

ng g c yourComponentName

2 个答案:

答案 0 :(得分:0)

我还没有尝试过,但是应该可以。

$public_htmlUrl = $_SERVER['DOCUMENT_ROOT'];
$outsideUrl = "../".$public_htmlUrl;
$file = outsideUrl."subdomain/conn.php";
include($file);

答案 1 :(得分:0)

通常包含绝对路径而不是相对路径是最有用的。有两种典型的方法可以解决此问题。本示例将与以下目录结构一起使用,因为您没有提供您的目录结构:

 +var
 |+www
  |+public_html
   -index.php
   |+subfolder
    |somescript.php
  |+subdomain
   |conn.php

1)在您的index.php文件中,声明一个与public_html目录的绝对路径相对应的常量

define('APPLICATION_BASE', __DIR__ . DIRECTORY_SEPARATOR);

然后将其用作所有包含的前缀,并添加相对于此的路径:

include APPLICATION_BASE . '../subdomain/conn.php';

此选项对于大多数常规用途来说效果很好,使您可以快速包含相对于前控制器/索引文件而言的大多数文件

2)或者,如果您没有使用统一的索引文件,并且没有足够可靠的一致性参考点,可以始终将其包括在内,则可以采用类似的方法,并 include基于包含该文件的文件的绝对路径。这通常表明您缺乏良好的应用程序结构,但是对于快速,肮脏的应用程序或遗留代码没有确定的单点访问结构的情况,这通常是必需的。如果您必须包含来自somescript.php的文件,而又不能可靠地从index.php到达文件,则可能会执行以下操作:

include __DIR__ . '/../../subdomain/conn.php';

应该注意的是,这种方法虽然很紧要,但远非最佳选择,如果可能的话,您应该尝试将应用程序推向第一种方法。使用一致的入口点将在以后调试时为您节省大量的猜测,因为您将知道所有文件都是基于与单个原始目录的相关性而包含的,并且随着时间的流逝,它将使错误消息和日志记录更加整洁和可读性强,这将为您节省大量调试时间。