如何使用 php 在域目录中调用 public_html 之外的文件

How to call a file outside public_html within the domain directory using php

我有一个包含子域的域。我想调用子域文件夹中的文件,但显然我的子域文件夹在 public_html 目录之外。这是我尝试过的,但没有任何内容 happening.The 子域文件夹是子域。

<?php
include("subdomain/conn.php") // location of the file in the subdomain
?>

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

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

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

 +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';

此选项适用于大多数一般用途,允许您快速包含大多数与 front-controller/index 文件相关的任何文件

2) 或者,如果您没有使用统一的索引文件并且没有足够可靠的一致参考点始终被包含在内,您将应用类似的方法根据包含它的文件的绝对路径包含。这通常表明您缺乏良好的应用程序结构,但对于快速而肮脏的应用程序或未使用确定的单点访问结构的遗留代码,这通常是必要的。如果您必须包含来自 somescript.php 的文件并且无法从 index.php 可靠地到达那里,您可能会这样做:

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

应该注意的是,这在紧要关头有效,但远非最佳,如果可能,您应该尝试将您的应用程序推向第一种方法。使用一致的入口点可以让你在调试时省去很多猜测,因为你会知道所有文件都是基于与单个源目录的相关性而包含的,并且随着时间的推移,它会使错误消息和日志记录更清晰、更易读,这反过来会为您节省大量调试时间。