Php 获取绝对文件路径

Php 获取绝对文件路径,php,filepath,absolute-path,Php,Filepath,Absolute Path,如何获取php的绝对文件路径 我有一个文件夹abc和xyz 我使用Ajax请求将abc的文件a.php包含在xyz文件夹中,并给出了如下相对路径: ../a.php 文件a.php包含一些使用Ajax请求完成的操作 在xyz文件夹中,我希望执行与在abc文件夹中执行的相同操作,但当我尝试执行这些操作时,它正在xyz文件夹中搜索文件,而不是在abc文件夹中搜索文件,因此我希望在xyz中执行的操作不起作用 请帮我怎么做 更新代码: $(function(){ $.ajax({

如何获取php的绝对文件路径

我有一个文件夹abc和xyz

我使用Ajax请求将abc的文件a.php包含在xyz文件夹中,并给出了如下相对路径:

../a.php
文件a.php包含一些使用Ajax请求完成的操作

在xyz文件夹中,我希望执行与在abc文件夹中执行的相同操作,但当我尝试执行这些操作时,它正在xyz文件夹中搜索文件,而不是在abc文件夹中搜索文件,因此我希望在xyz中执行的操作不起作用

请帮我怎么做

更新代码:

$(function(){
    $.ajax({
        type:"POST",
        url: "../xyz/a.php",
        data: {
            "Id": '<?php echo $_GET['Id'];?>'
        },
        success: function(data){
            $("#divId").html(data);
        }
    }); 
});
$(函数(){
$.ajax({
类型:“POST”,
url:“../xyz/a.php”,
数据:{
“Id”:”
},
成功:功能(数据){
$(“#divId”).html(数据);
}
}); 
});

首先,如果您想在
abc
xyz
中包含一个文件,您需要执行
。/abc/a.php
,而不是
。/a.php
(当然,除非该文件与您的两个目录处于同一级别)

其次,将相对路径转换为绝对路径的函数称为
realpath
,您可以找到文档

如果目录结构如下所示:

abc/
xyz/
a、 php
…然后要从一个目录中的文件中获取
a.php
的绝对路径,您可以

$absolute=realpath('../a.php');

首先,如果您想在
abc
xyz
中包含一个文件,您需要执行
。/abc/a.php
,而不是
。/a.php
(当然,除非该文件与您的两个目录处于同一级别)

其次,将相对路径转换为绝对路径的函数称为
realpath
,您可以找到文档

如果目录结构如下所示:

abc/
xyz/
a、 php
…然后要从一个目录中的文件中获取
a.php
的绝对路径,您可以

$absolute=realpath('../a.php');

我建议您在配置/索引/引导中执行以下操作:

define('ROOT_DIRECTORY', dirname(__FILE__).'/');
这样,当您需要从其他位置加载文件时,就可以创建相对于根目录的所有路径。例如:

require_once(ROOT_DIRECTORY . 'abc/xyz.php');
这将使文件包含变得更加简单,并允许您将整个项目目录移动到另一个位置(例如生产服务器),而不破坏任何“路径”逻辑

看到您的代码更新,我发现您实际上是在谈论来自javascript的请求。。在这种情况下,只需将完整的url保留到文件:url:'http://server.com/xyx/abc.php"


干杯

我建议您在配置/索引/引导中执行以下操作:

define('ROOT_DIRECTORY', dirname(__FILE__).'/');
这样,当您需要从其他位置加载文件时,就可以创建相对于根目录的所有路径。例如:

require_once(ROOT_DIRECTORY . 'abc/xyz.php');
这将使文件包含变得更加简单,并允许您将整个项目目录移动到另一个位置(例如生产服务器),而不破坏任何“路径”逻辑

看到您的代码更新,我发现您实际上是在谈论来自javascript的请求。。在这种情况下,只需将完整的url保留到文件:url:'http://server.com/xyx/abc.php"


干杯

在Ajax请求中,我已经像这样更改了url

url: location.protocol + "//" + location.host + "projectname/foldername/filename.php"

然后它在Ajax请求中完美地工作了

,我像这样更改了url

url: location.protocol + "//" + location.host + "projectname/foldername/filename.php"

然后它就完美地工作了

例如,您在

以下是php变量:

==============================================================================

    ======I======
    __File__;                           C:\wamp\www\folder1\folder2\file.php
    $_SERVER['PHP_SELF'];               /folder1/folder2/file.php
    //$_SERVER['PHP_SELF'] is the same as $_SERVER["REQUEST_URI"];

    ======II======
    getcwd();                           C:\wamp\www\folder1\folder2\
    dirname();                          OUTPUTS NOTHING - EMPTY NOT ALLOWED
    basename();                         OUTPUTS NOTHING - EMPTY NOT ALLOWED
    __dir__;                            C:\wamp\www\folder1\folder2

    ======III======
    getcwd( XXX );                      OUTPUTS NOTHING - PARAMETER NOT ALLOWED
    getcwd( XXX );                      OUTPUTS NOTHING - PARAMETER NOT ALLOWED
    getcwd( XXX );                      OUTPUTS NOTHING - PARAMETER NOT ALLOWED

    dirname(__FILE__);                  C:\wamp\www\folder1\folder2
    dirname($_SERVER['PHP_SELF']);      /folder1/folder2
    dirname(getcwd());                  C:\wamp\www\folder1
    dirname(dirname());                 OUTPUTS NOTHING - EMPTY NOT ALLOWED
    dirname(basename());                OUTPUTS NOTHING - EMPTY NOT ALLOWED

    basename(__FILE__);                 file.php
    basename($_SERVER['PHP_SELF']);     file.php
    basename(getcwd());                 folder2
    basename(dirname());                OUTPUTS NOTHING - EMPTY NOT ALLOWED
    basename(basename());               OUTPUTS NOTHING - EMPTY NOT ALLOWED

    ======IV======
    on dirname
    dirname(dirname(__FILE__));                     C:\wamp\www\folder1
    dirname(dirname($_SERVER['PHP_SELF']));         /folder1
    dirname(dirname(getcwd()));                     C:\wamp\www
    basename(dirname(__FILE__));                    folder2
    basename(dirname($_SERVER['PHP_SELF']));        folder2
    basename(dirname(getcwd()));                    folder1;

    on basename
    dirname(basename(__FILE__));                    .
    dirname(basename($_SERVER['PHP_SELF']));        .
    dirname(basename(getcwd()));                    .
    basename(basename(__FILE__));                   file.php
    basename(basename($_SERVER['PHP_SELF']));       file.php
    basename(basename(getcwd()));                   folder2
==============================================================================
============示例===========

主页url

<?php echo $_SERVER['HTTP_HOST'];?>

仅当前文件url(如:mysite.com/myfile.php)


当前url(如:mysite.com/myfile.php?action=blablabla)

<?php echo $_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];?>

获取文件的RealPath(即使包含它)(将/var/public\u html更改为所需的根目录)


例如,您在

以下是php变量:

==============================================================================

    ======I======
    __File__;                           C:\wamp\www\folder1\folder2\file.php
    $_SERVER['PHP_SELF'];               /folder1/folder2/file.php
    //$_SERVER['PHP_SELF'] is the same as $_SERVER["REQUEST_URI"];

    ======II======
    getcwd();                           C:\wamp\www\folder1\folder2\
    dirname();                          OUTPUTS NOTHING - EMPTY NOT ALLOWED
    basename();                         OUTPUTS NOTHING - EMPTY NOT ALLOWED
    __dir__;                            C:\wamp\www\folder1\folder2

    ======III======
    getcwd( XXX );                      OUTPUTS NOTHING - PARAMETER NOT ALLOWED
    getcwd( XXX );                      OUTPUTS NOTHING - PARAMETER NOT ALLOWED
    getcwd( XXX );                      OUTPUTS NOTHING - PARAMETER NOT ALLOWED

    dirname(__FILE__);                  C:\wamp\www\folder1\folder2
    dirname($_SERVER['PHP_SELF']);      /folder1/folder2
    dirname(getcwd());                  C:\wamp\www\folder1
    dirname(dirname());                 OUTPUTS NOTHING - EMPTY NOT ALLOWED
    dirname(basename());                OUTPUTS NOTHING - EMPTY NOT ALLOWED

    basename(__FILE__);                 file.php
    basename($_SERVER['PHP_SELF']);     file.php
    basename(getcwd());                 folder2
    basename(dirname());                OUTPUTS NOTHING - EMPTY NOT ALLOWED
    basename(basename());               OUTPUTS NOTHING - EMPTY NOT ALLOWED

    ======IV======
    on dirname
    dirname(dirname(__FILE__));                     C:\wamp\www\folder1
    dirname(dirname($_SERVER['PHP_SELF']));         /folder1
    dirname(dirname(getcwd()));                     C:\wamp\www
    basename(dirname(__FILE__));                    folder2
    basename(dirname($_SERVER['PHP_SELF']));        folder2
    basename(dirname(getcwd()));                    folder1;

    on basename
    dirname(basename(__FILE__));                    .
    dirname(basename($_SERVER['PHP_SELF']));        .
    dirname(basename(getcwd()));                    .
    basename(basename(__FILE__));                   file.php
    basename(basename($_SERVER['PHP_SELF']));       file.php
    basename(basename(getcwd()));                   folder2
==============================================================================
============示例===========

主页url

<?php echo $_SERVER['HTTP_HOST'];?>

仅当前文件url(如:mysite.com/myfile.php)


当前url(如:mysite.com/myfile.php?action=blablabla)

<?php echo $_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];?>

获取文件的RealPath(即使包含它)(将/var/public\u html更改为所需的根目录)


more code..moaaar!(因为说您使用ajax包含.php文件,我觉得很奇怪)包含或请求?更多代码..moaaar!(因为说您使用ajax包含.php文件,我觉得很奇怪)包含或请求?