Документ полосы базируется от всего пути сервера в PHP

Хорошо, я определил константу PHP, которая указывает на файл на сервере как это:

define('SOME_FILE', str_replace('//', '/', str_replace('\\', '/', dirname(__FILE__) . '/foo-bar.txt')));

SOME_FILE будет содержать полный путь + имя файла, которое является useble в функциях PHP как include, fopen, и т.д. Теперь, если я хочу использовать этот путь в качестве URL в моем (X) вывод HTML, я завинчен. Для этого я должен снять изоляцию с корня документа.

Обычно, $_SERVER['DOCUMENT_ROOT'] установлен в 99% сред PHP, но это может произойти, где это плохо настроено, перезаписано пользователем или даже пропавшими без вести.

Теперь то, что я хочу сделать, к define() другая константа PHP на основе SOME_FILE это укажет на фактический URL файла (корневой путь документа является неизолированным).

Я знаю, что могу сделать это в 3-4 строках кода с __FILE__, $_SERVER['SCRIPT_NAME'] (SCRIPT_NAME требуется согласно спецификации CGI 1.1, но не DOCUMENT_ROOT), strrpos, и substr, но я ищу "одну строку" решение использовать в определить операторе...

Я использую PHP 5.1.0 +. Приветствующиеся предложения Amy!

1
задан AlexV 29 July 2010 в 20:50
поделиться

1 ответ

Самое простое решение - это, вероятно, иметь второй набор Consts для удаленных URL.

define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
define('ROOT_URL', 'http://domain.com');
define('BLAH_PATH', ROOT_PATH . PATH_SEPARATOR . 'blah.php');
define('BLAH_URL', ROOT_URL . PATH_SEPERATOR . 'blah.php');
1
ответ дан 2 September 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: