【问题标题】:How to include a file from subdomain in PHP如何在 PHP 中包含子域中的文件
【发布时间】:2026-01-20 07:40:02
【问题描述】:

我正在尝试将我的子域中的文件包含到位于主域中的文件中...

例如:

sub.domain.com/inc/template/file.php

domain.com/index.php

到目前为止我已经尝试过:

include('http://sub.domain.com/inc/template/file.php')

但这并不安全,因为我需要使用 php 启用 url_fopen...所以我正在尝试寻找另一种方法来执行此操作...

我也想知道当我包含一个文件时,我是否可以在包含文件后回显一个变量。

提前致谢。

【问题讨论】:

  • 您的子域设置是什么?如果它在同一台服务器上,您可以尝试从系统的根目录中包含它。
  • 它在同一个服务器上,但它不在同一个目录上,这是因为我使用cPanel新功能在用户目录而不是public_html上设置子域。
  • 例如/home/user/public_html sub.domain.com sub2.domain.com
  • 喜欢/home/user/sub1/public_html//home/user/sub2/public_html/?还是别的什么?
  • 如果它在同一台服务器上,那么只需使用:../../(根据需要多次)进入服务器目录并写入文件的进一步路径

标签: php include


【解决方案1】:

只要文件位于同一服务器上,您就应该能够将其包含在完整路径中。

/home/user/public_html/file.php,如果你添加它应该可以工作:

include('/home/user/sub1.domain.com/file.php'); 

更多信息请阅读:http://php.net/manual/en/function.include.php

【讨论】:

    【解决方案2】:

    allow_url_include 和allow_url_fopen 允许大量的网络攻击成功。许多网站因为存在 PHP 漏洞而遭到黑客攻击。如果这些网站一直在使用allow_url_include = Off,或更通用的allow_url_fopen = Off,那么即使底层漏洞没有得到修复,许多黑客攻击也不会成功。 如果没有它也能过得去,那就关掉它,因为它提供了非常真实的保护。

    当您包含来自同一网站的文件时,您不必使用完整的 URL,也不应该使用。

    如果您要包含来自其他网站的文件,请问问自己是否真的有必要这样做。如果它是来自您管理的另一个站点的静态文件,您可以制作该文件的本地副本并在不包含 URL 的情况下包含它。

    在某些情况下,您可能必须通过 URL 包含,但始终尝试先找到替代方法。

    还有一件事—— 在 PHP 4.3.0 之前的 Windows 版本上,以下函数不支持远程文件访问:include、include_once、require、require_once 以及 GD 和 Image Functions 扩展中的 imagecreatefromXXX 函数。 Read more

    【讨论】:

      【解决方案3】:
      $source = $_SERVER['DOCUMENT_ROOT'].'/inc/template/file.php';
      $destination = $_SERVER['DOCUMENT_ROOT']."/".$subDomainName."/file.php";
      
      if( !copy($source, $destination) ) { 
          echo "File can't be copied! \n"; 
      } 
      else { 
          echo "File has been copied! \n"; 
      } 
      

      【讨论】: