Получить абсолютный путь к файлу

Как получить абсолютный путь к файлу 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