2015-10-03 64 views
2

我有一個符號鏈接/var/www/html/lib/它指向/var/www/application/lib/解析符號鏈接和相對URL

在文件/var/www/application/lib/testing/imageMaker2/otherFile.php中,我創建了一個新文件/var/www/application/lib/testing/imageMaker2/images/test.png

接下來,我希望otherFile.php將相對於web服務器文檔根的URL發送到客戶端(即/lib/testing/imageMaker2/images/test.png)。

沒有先驗知識的符號鏈接,這怎麼可能?

test.php的

<?php 
require_once('otherFile.php'); 
otherFile(__DIR__.'/images/'); //Or what ever upload directory is desired. 
? 

otherFile.php

<?php 
function otherFile($path) { 
    $path_parts = pathinfo($_SERVER['PHP_SELF']); 
    $image='test.png'; 
    echo('$path        => '.$path."\n"); 
    echo('$image        => '.$image."\n"); 
    echo('$path/$image      => '.$path.'/'.$image."\n"); 
    echo('__DIR__        => '.__DIR__."\n"); 
    echo('__FILE__       => '.__FILE__."\n"); 
    echo('$_SERVER[SCRIPT_FILENAME]   => '.$_SERVER['SCRIPT_FILENAME']."\n"); 
    echo('realpath($_SERVER[SCRIPT_FILENAME]) => '.realpath($_SERVER['SCRIPT_FILENAME'])."\n"); 
    echo('$_SERVER[PHP_SELF]     => '.$_SERVER['PHP_SELF']."\n"); 
    echo('$_SERVER[DOCUMENT_ROOT]    => '.$_SERVER['DOCUMENT_ROOT']."\n"); 
    echo('$path_parts[dirname]    => '.$path_parts['dirname']."\n"); 
    echo('dirname($_SERVER[PHP_SELF])   => '.dirname($_SERVER['PHP_SELF'])."\n"); 
} 
?> 

輸出

$path        => /var/www/application/lib/testing/imageMaker2/images/ 
$image        => test.png 
$path/$image      => /var/www/application/lib/testing/imageMaker2/images//test.png 
__DIR__        => /var/www/application/lib/testing/imageMaker2 
__FILE__       => /var/www/application/lib/testing/imageMaker2/otherFile.php 
$_SERVER[SCRIPT_FILENAME]   => /var/www/html/lib/testing/imageMaker2/test.php 
realpath($_SERVER[SCRIPT_FILENAME]) => /var/www/application/lib/testing/imageMaker2/test.php 
$_SERVER[PHP_SELF]     => /lib/testing/imageMaker2/test.php 
$_SERVER[DOCUMENT_ROOT]    => /var/www/html 
$path_parts[dirname]    => /lib/testing/imageMaker2 
dirname($_SERVER[PHP_SELF])   => /lib/testing/imageMaker2 
+0

爲什麼不直接用'「/ lib/testing/imageMaker2 /」連接文件名的相對路徑。 $ filename;'? –

+0

@JulioSoares相對路徑含義'$ _SERVER ['PHP_SELF']'? – user1032531

+0

如果你想要,但你必須先提取「test.php」。我會定義一個constat。但是你甚至可以對它進行硬編碼。 –

回答

0

按你的意見......

$path_parts = pathinfo($_SERVER['PHP_SELF']); 

echo $path_parts['dirname']; 

然後你只是提取你想要的。

+0

'dirname($ _ SERVER ['PHP_SELF'])'會做同樣的事情。仍然需要做一些操縱使用concat或str_replace ... – user1032531

+0

但不是已經在變量中的文件名? '$ path = dirname($ _ SERVER ['PHP_SELF'])有什麼不好? $ filename;'例如? –

+0

是的,'$ filename'是一個變量,它所在的路徑也是如此。我原本沒有做好這項工作,並編輯了原文。 – user1032531