PHP включает в себя, которые включают в себя другой файл PHP - PullRequest
1 голос
/ 12 июня 2010

Я сейчас очень запутался, и мой мозг болит!:( lol

Root:

  • index.php

Включает в себя:

  • cat.php
  • dog.php

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

собака включает кошку: include ("cat.php");

Когда я запускаю index, для cat он говорит:

  1. Невозможно установить связь с сервером
  2. Доступ запрещен для пользователя ...

Однако, если я бегу с собакой, у меня нет проблем ...

Я угадываю путь, но я пытался ./include/cat.php без радости ...

Ответы [ 4 ]

5 голосов
/ 12 июня 2010

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

На собаке выполните

include(dirname(__FILE__) . '/cat.php'); // __FILE__ is always the name of the php file it's in
1 голос
/ 28 сентября 2010

Еще один способ решить эту проблему - задать путь для включения файлов, посмотрите на это.

http://ve2.php.net/manual/en/function.set-include-path.php

1 голос
/ 12 июня 2010

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

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

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

0 голосов
/ 30 декабря 2011

Спасибо за эту прекрасную тему.

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

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

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

...