获取绝对文件路径

时间:2012-04-12 11:43:14

标签: php filepath absolute-path

如何获取绝对文件路径php

我有一个文件夹abc和xyz。

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

../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);
        }
    }); 
});

4 个答案:

答案 0 :(得分:3)

我建议你在config / index / bootstrap中执行类似的操作:

define('ROOT_DIRECTORY', dirname(__FILE__).'/');

这样,当您需要从其他位置加载文件时,您可以创建相对于ROOT_DIRECTORY的所有路径。例如:

require_once(ROOT_DIRECTORY . 'abc/xyz.php');

这将使文件包含更简单,并允许您将整个项目目录移动到另一个位置(例如生产服务器),而不会破坏任何“路径”逻辑。

看到你的代码更新,我看到你真的在谈论来自javascript的请求..在这种情况下,只需将完整的url留给文件:url:'http://server.com/xyx/abc。 PHP“

干杯

答案 1 :(得分:2)

例如,您在 http://your-site.com/folder1/folder2/file.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
==============================================================================

============实施例===========

主页

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

仅限当前FILE网址(如:mysite.com/myfile.php)

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

当前网址完全(例如:mysite.com/myfile.php?action=blabla

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

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

<?php
// First step: Get full path
$cur_file=str_replace('\\','/',__FILE__);
// Second step: Remove the root path
$cur_file=preg_replace('/(.*?)\/var\/public_html/','',$cur_file);
?>

对于wordpress,已经有预定义的函数来获取插件或主题url。

答案 2 :(得分:1)

首先,如果您要在xyz abc中添加文件,则需要执行../abc/a.php,而不是../a.php(当然,除非文件是在与两个目录相同的级别上。)

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

如果您的目录结构是这样的:

abc/
xyz/
a.php

...然后从你位于你的某个目录中的文件中获取a.php的绝对路径,你会这样做

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

答案 3 :(得分:1)

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

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

然后它完美地运作