2015-10-03 4 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 отправил 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». Вместо этого я бы определил константу. Но вы можете даже жестко записать его. –

ответ

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

Смежные вопросы