Получете абсолютен път на файла

Как да получите абсолютен път на файла php

Имам папка abc и xyz.

Включвам файла a.php на abc в папка xyz, използвайки Ajax заявка, като давам относителен път, който е като:

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

person vvr    schedule 12.04.2012    source източник
comment
още код..моаааар! (тъй като каза, че включвате .php файл с помощта на ajax, намирам това за странно)   -  person Adi    schedule 12.04.2012
comment
включително или искане?   -  person Manigandan Arjunan    schedule 12.04.2012


Отговори (4)


Препоръчвам ви да направите нещо подобно във вашия 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'

наздраве

person smassey    schedule 12.04.2012

Например вие сте в 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
==============================================================================

============ ПРИМЕРИ============

URL адрес на дома

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

САМО url на текущия ФАЙЛ (като: mysite.com/myfile.php)

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

Текущ URL адрес Напълно (като: 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 адрес на добавки или теми.

person T.Todua    schedule 04.07.2013

Първо, ако искате да включите файл в xyz от abc, трябва да направите ../abc/a.php, а не ../a.php (освен ако, разбира се, файлът не е на същото ниво като двете ви директории).

Второ, функцията за преобразуване на относителни пътища в абсолютни се нарича realpath и можете да намерите документацията тук.

Ако структурата на вашата директория е нещо подобно:

abc/
xyz/
a.php

... тогава, за да получите абсолютния път на a.php от файл, намиращ се в една от вашите директории, ще направите

$absolute = realpath('../a.php');
person Andris    schedule 12.04.2012

В заявката на Ajax промених url като този

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

След това работи перфектно

person vvr    schedule 26.04.2012