Хорошо, я определил константу 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!
Самое простое решение - это, вероятно, иметь второй набор 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');