Определите путь к файлу относительно DOCUMENT_ROOT

У меня есть символическая ссылка /var/www/sitename/html/lib/ что указывает на /var/www/sitename/application/lib/, а также DOCUMENT_ROOT является /var/www/sitename/html/,

В /var/www/sitename/application/lib/testing/relative.phpЯ хочу найти путь к этому файлу относительно корня документа (т.е. /lib/testing/relative.php). Обратите внимание, что relative.php содержит класс и не вызывается напрямую.

Если relative.php вызывается из файла, также находящегося в символической ссылке, такой как https: //sitename/lib/testing.php, Я мог бы найти путь относительно корня документа, однако я не могу сделать это из https: //sitename/testing.php

Без жесткого кодирования пути символической ссылки можно найти путь /var/www/sitename/application/lib/testing/relative.php относительно DOCUMENT_ROOT если вызывается из файла не в символической ссылке?

Ниже показано, что я пробовал.

/var/www/sitename/lib/testing/relative.php

<?php
class relative {
public function __construct()
{
$__FILE__=__FILE__;
$PHP_SELF=$_SERVER['PHP_SELF'];
$DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];
$SCRIPT_FILENAME=$_SERVER['SCRIPT_FILENAME'];
$SCRIPT_FILENAME_REAL=realpath($_SERVER['SCRIPT_FILENAME']);

$replace1=str_replace($PHP_SELF,'',$SCRIPT_FILENAME_REAL);
$replace2=str_replace($replace1,'',__FILE__);

echo("__FILE__              => $__FILE__\n");
echo("PHP_SELF              => $PHP_SELF\n");
echo("DOCUMENT_ROOT         => $DOCUMENT_ROOT\n");
echo("SCRIPT_FILENAME       => $SCRIPT_FILENAME\n");
echo("SCRIPT_FILENAME_REAL  => $SCRIPT_FILENAME_REAL\n\n");
echo('str_replace($PHP_SELF,"",$SCRIPT_FILENAME_REAL)'."\n");
echo('$replace1             => '.$replace1."\n\n");
echo('str_replace(str_replace($PHP_SELF,"",$SCRIPT_FILENAME_REAL),"",__FILE__)'."\n");
echo('$replace2             => '.$replace2);

}
}
?>

/var/www/sitename/lib/testing.php

<?php
require_once('testing/relative.php');
new relative();
?>

ВЫХОД

__FILE__              => /var/www/sitename/application/lib/testing/relative.php
PHP_SELF              => /lib/testing.php
DOCUMENT_ROOT         => /var/www/sitename/html
SCRIPT_FILENAME       => /var/www/sitename/html/lib/testing.php
SCRIPT_FILENAME_REAL  => /var/www/sitename/application/lib/testing.php

str_replace($PHP_SELF,"",$SCRIPT_FILENAME_REAL)
$replace1             => /var/www/sitename/application

str_replace(str_replace($PHP_SELF,"",$SCRIPT_FILENAME_REAL),"",__FILE__)
$replace2             => /lib/testing/relative.php

/var/www/sitename/testing.php

<?php
require_once('lib/testing/relative.php');
new relative();
?>

ВЫХОД

__FILE__              => /var/www/sitename/application/lib/testing/relative.php
PHP_SELF              => /testing.php
DOCUMENT_ROOT         => /var/www/sitename/html
SCRIPT_FILENAME       => /var/www/sitename/html/testing.php
SCRIPT_FILENAME_REAL  => /var/www/sitename/html/testing.php

str_replace($PHP_SELF,"",$SCRIPT_FILENAME_REAL)
$replace1             => /var/www/sitename/html

str_replace(str_replace($PHP_SELF,"",$SCRIPT_FILENAME_REAL),"",__FILE__)
$replace2             => /var/www/sitename/application/lib/testing/relative.php

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]