2015-05-17 7 views
0

Я создал PHP файл url.php и написал это коды -Создания абсолютного пути в PHP

<?php 
define("BASE_URL", "/geo15/"); 
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . "geo15/"); 
?> 

Я включил файл url.php в нескольких страницах, но когда я просматриваю эти файлы, я получаю сообщение об ошибке:

Warning: require_once(inc/url.php): failed to open stream: No such file or directory in C:\wamp\www\geo15\inc\header.php on line 1

Но когда я вставляю на путь C: \ WAMP \ WWW \ geo15 \ вкл \ header.php в адресной строке своего браузера, она открывается.

N.B. Я использую WAMP-сервер для разработки.

+0

do u mean define ("BASE_URL", ".../geo15 /"); – user1844933

+0

Нет, постоянный BASE_URL работает отлично, но ROOT_PATH не работает. Я хочу создать абсолютный путь к моему файлу header.php. –

+0

Это может решить проблему -> [http://stackoverflow.com/q/11893832/3949439][1] [1]: http://stackoverflow.com/q/11893832/3949439 –

ответ

0

DOCUMENT_ROOT бы вывести что-то вроде "C:/WAMP/WWW", так что вы будете отсутствовать один/там. Ваш текущий код действительно выводит что-то вроде «c:/wamp/wwwgeo15 /».

Кроме того, убедитесь, что 'geo15 /' находится в каталоге www, а не в псевдониме. Если это псевдоним, вы обязательно получите неработающую ссылку. Кроме того, вы можете найти следующую полезную:

имя-каталога ($ _ SERVER [ 'SCRIPT_FILENAME'])

  • выведет что-то вроде «х:/путь/к/в/тока/выполнения/PHP/файл'.
  • $ _SERVER ['SCRIPT_FILENAME'] выводит что-то вроде «x: /path/to/the/current/executing/php/file/theCurrentRunningFile.php».
  • Это полезно для поиска страниц, которые необходимо включить, включить или потребовать.

имя_директории ($ _ SERVER [ 'PHP_SELF'])

  • выведет что-то вроде '/ myAliasDirectory/и/путь/к/ток/PHP/файл.
  • $ _SERVER ['PHP_SELF'] выводит что-то вроде '/myAliasDirectory/and/path/to/current/php/file/theCurrentRunningFile.php'.
  • Это полезно для создания динамических гиперссылок.

В качестве альтернативы, если у вас много подкаталогов, вам может потребоваться использовать «../», чтобы указать каталог над текущим каталогом. Итак, если ваш сценарий «/my/path/to/current/runningscript.php», и файл, который вы хотите включить, находится в «/include/this/file.php», тогда правильный способ включить его: «включить ('../../../../../include/this/file.php');».

И .., начинающийся с символа «/», также приведет вас в корневую директорию или на самом деле, он может либо указать корневую директорию текущего псевдонима ИЛИ корневого каталога жесткого диска, а начинать без косой черты начнется в текущем каталоге запущенного скрипта.Если вы работаете в псевдониме «/ myAliasDirectory /», начиная с include/like в include ('/ file.php), «будет работать, если« file.php »находится в« x: /file.php », или "/myAliasDirectory/file.php". Так что да, это становится довольно запутанным, если вы это сделаете, поэтому я лишь половину рекомендую.

0

Я использую этот код (в Unix):

include dirname(__FILE__).'/paht/relative/to/the/current/file/file_name.php'; 

Он работает во всех ситуациях.

в Windows, вы можете использовать:

include dirname(__FILE__).'\paht\relative\to\the\current\file\file_name.php'; 
+0

Я получаю эту ошибку: «Предупреждение: include (C: \ wamp \ www \ geo15 \ pages \ bazi-analysis ../../ inc/header.php): не удалось открыть поток: нет такого файла или каталога в C: \ wamp \ www \ geo15 \ pages \ bazi-analysis \ 3-years-bazi-analysis.php в строке 1' –

+0

@Crtvca Если ОС сервера - это окна, вы должны использовать обратную косую черту ('\') для разделения каталоги, а если это Linux (Unix), вы используете forward-slash ('/'). видимо, вы работаете в окнах, поэтому вы должны заменить косую черту обратной косой чертой. – Ormoz