我有一个具有子域名的域名。我想调用子域文件夹中的文件,但显然我的子域文件夹在public_html目录之外。这是我尝试但没有发生任何事情。子域文件夹是子域名。
<?php
include("subdomain/conn.php") // location of the file in the subdomain
?>
包含绝对路径而不是相对路径通常是最有帮助的。有两种典型的方法可以解决这个问题。此示例将使用以下目录结构,因为您没有提供您的:
+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)或者,如果您没有使用统一索引文件并且没有足够可靠的一致参考点以便始终包含,您将应用类似的方法并根据包含它的文件的绝对路径进行包含。这通常表明您缺乏良好的应用程序结构,但对于快速而肮脏的应用程序或遗留代码而言,这些代码并非具有明确的单一访问点,这通常是必要的。如果您必须包含来自somescript.php
的文件,并且无法从index.php
可靠地到达那里,您可能会执行以下操作:
include __DIR__ . '/../../subdomain/conn.php';
应该注意的是,这在一个紧要关头,但它远非最佳,你应该尝试按照第一种方法按摩你的应用程序,如果可能的话。使用一致的入口点将在以后调试时节省大量的猜测,因为您将知道所有文件都是基于与单个源目录的相关性而包含的,并且它将保持错误消息并且记录更清晰且更易读,这反过来会节省你很多时间调试。
我还没有尝试过,但它应该工作。
$public_htmlUrl = $_SERVER['DOCUMENT_ROOT'];
$outsideUrl = "../".$public_htmlUrl;
$file = outsideUrl."subdomain/conn.php";
include($file);