2012-04-12 175 views
1

如何獲取絕對文件路徑php獲取絕對文件路徑

我有一個文件夾abc和xyz。

我包括XYZ文件夾中使用Ajax請求給予這就好比是相對路徑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

更多代碼..moaaaar! (因爲說你使用ajax包含.php文件,我發現這是奇怪的) – Adi 2012-04-12 11:44:29

+1

包括或請求? – 2012-04-12 11:51:12

回答

1

在Ajax請求我已經改變URL這樣

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

然後,它的工作完美

1

首先,如果你想在xyz文件從abc,你需要做的../abc/a.php,不../a.php(除非,當然,該文件是在同一級別作爲你的兩個目錄)。

其次,將相對路徑轉換爲絕對的函數被稱爲realpath,您可以找到文檔here

如果你的目錄結構是這樣的:

abc/ 
xyz/ 
a.php 

...那麼得到的a.php從位於您的目錄中的一個文件的絕對路徑,你會做

$absolute = realpath('../a.php'); 
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

例如,你在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'];?> 

目前唯一的文件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"];?> 

爲了得到真實路徑的文件(即使它包含)(更改的/ 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。