2010-06-12 7 views
1

Теперь я действительно запутался, и мой мозг болит! :(лолphp включает в себя другой файл php

Корень:

  • index.php

Включает:

  • cat.php
  • dog.php

индекс включает в себя собаку : inc Люд ("включает/dog.php");

Собака включает в себя кошку: включить («cat.php»);

Когда я бегу индекс для кота он говорит:

  1. Ссылка на сервер не может быть установлен
  2. Доступ запрещен для пользователя ...

Однако, если я бегу собака, я не получаю никаких проблем ...

Я угадывание его путь, но я пытался ./includes/cat.php ни к радости ...

ответ

5

Это связано с тем, что когда вы включаете относительный путь, это относительно точки входа (первый PHP-файл, вызываемый веб-сервером).

В собаке, сделайте

include(dirname(__FILE__) . '/cat.php'); // __FILE__ is always the name of the php file it's in 
+0

yup, Emma, ​​вы включаете файл a/c dog.php, но вместо этого вы должны включить/c index.php. просто подумайте, как dog.php собирается вставить в index.php и использовать ваш путь a/c, который – nik

+0

Спасибо, Барт. Надеюсь, это исправит. Мне нужно сначала очистить несколько бит ... Nik - Я не уверен, что я следую, извините. Вы имеете в виду, что я должен включать собаку и кошку из индекса, а затем не беспокоиться о том, что они включают? – Emma

1

Это зависит от того, где скрипта вы выполняете ложь. Когда вы выполняете /index.php, путь к скрипту установлен в /, поэтому все включает в себя начало оттуда. Это значит, что вы может найти /includes/dog.php, но не найдено /cats.php. Имейте в виду, что даже если вы включаете cats.php из своего сценария /includes/dog.php, это не изменяет исходный путь извлечения.

Когда, с другой стороны, вы выполняете /includes/dog.php, ваш путь установлен в /includes/, поэтому PHP также может найти cats.php.

Прочитайте комментарий Барта о том, как это решить.

0

Спасибо за эту хорошую нить.

Я использовал ответ Барта, чтобы решить эту проблему. Но у меня все еще есть один вопрос.

Я был удивлен, что он работал в системе моего помощника, даже без использования dirname(__FILE__), поэтому я мало исследовал и сравнивал оба файла php.ini. Я заметил, что разница в параметре include_path в php.ini.

В моем php.ini он установлен в каталог Pear. Поэтому я прокомментировал это просто, чтобы проверить, и к моему удивлению, это сработало. Это когда я понял, что нам нужно включить некоторую папку, которую я не знаю или не комментирую, чтобы она принимала значение по умолчанию.

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