Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从子域通过url包含文件时,Http请求失败_Php_Html_Directory_Apache2 - Fatal编程技术网

Php 从子域通过url包含文件时,Http请求失败

Php 从子域通过url包含文件时,Http请求失败,php,html,directory,apache2,Php,Html,Directory,Apache2,我正在努力使可靠的代码,将工作在我的本地服务器和我的网站实际服务器上,这样我就不必改变路径等我的文件。我不能使用相对路径,因为我使用的是子域,所以浏览器看不到该路径上方的文件夹,所以我尝试在本地服务器上使用根文件夹来指导我的代码文件所在的位置,并在Web服务器上检索servername。我现在得到的错误是 Warning: include(http://cms.domain.com/serverdetails.php): failed to open stream: HTTP request f

我正在努力使可靠的代码,将工作在我的本地服务器和我的网站实际服务器上,这样我就不必改变路径等我的文件。我不能使用相对路径,因为我使用的是子域,所以浏览器看不到该路径上方的文件夹,所以我尝试在本地服务器上使用根文件夹来指导我的代码文件所在的位置,并在Web服务器上检索servername。我现在得到的错误是

Warning: include(http://cms.domain.com/serverdetails.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /var/www/html/domain/administration/cms/DBconnection_patches.php on line 11
我有一个主域和一个子域cms.domain与cms文件的结构是这样的

domain
    -index.php
    -js
         -files.js
    -administration (subdomain folder)
         -index.php
         -otherfiles.php 
它是在linux Ubuntu14.04 apache2上通过Vhost生成的普通子域

  if($_SERVER['SERVER_NAME']=='domain.com'){
            $local = false; 
        }elseif($_SERVER['SERVER_NAME']=='localhost'){
            $local = true;
        }
        if($local){
            include $_SERVER['DOCUMENT_ROOT'] . '/domain/administration/serverdetails.php';
        }else{
            include 'http://cms.'.$_SERVER['SERVER_NAME'] . '/serverdetails.php';
        }
你不能使用绝对URL包含一个.php文件

因为在生成URL时,如果配置正确,服务器apache/nginx/whatever应该不会输出文件的内容。相反,它应该执行文件并返回已执行代码的输出

您需要使用内部文件路径来包含该文件。
对于这个dirname,文件在计算相对路径时会很有用。

你介意举个例子吗?我仍然不完全理解。我不认为我可以在从域调用子域时使用内部文件路径如果你的意思是说文件不在当前目录中,那么你实际上可以通过使用双点在目录中向上导航来构建相对路径,如果你说你在子域上无法访问所述文件,那么为什么不将其复制到子域可访问目录。因为我不想复制文件,稍后我会对这些文件进行一些更改,我不会记得总是将其复制到2个目录,这会造成混乱。相对路径不起作用,因为浏览器无法访问之前的cms.domain.com文件夹,它只能进一步访问文件夹。伙计,你对服务器端脚本工作原理的基本理解是有缺陷的。。包含的文件不包含在浏览器中,而是包含在php解释器中,在运行时,所有这些都发生在浏览器甚至还没有得到第一位响应之前。。。include../serverdetails.php:未能打开流:在尝试相对路径后,在第11行的/var/www/html/leaguenotes/administration/cms/DBconnection_patches.php中没有这样的文件或目录,这里还有一句来自类似问题“浏览器处理子域”的引用。这与服务器计算机内部的路径无关,而是与网站公共根目录的路径有关,因此,sub.domain.com与domain.com的浏览器完全不同。在内部可以传递相同的内容,但在.htaccess文件中需要规则。”