Подтвердить что ты не робот

PHP требует() относительной ошибки пути

У меня есть следующая структура файла:

rootDIR
    dir1
        subdir1
           file0.php
           file1.php
    dir2
       file2.php
       file3.php
       file4.php   

file1.php требуется file3 и file4 из dir2 следующим образом:

require('../../dir2/file3.php')

file2.php требует file1.php следующим образом:

require('../dir1/subdir1/file1.php')

НО, а затем потребовать, чтобы в файле1 не удалось открыть файл3 и файл4 (возможно, из-за относительности пути)

Однако в чем причина и что я могу сделать для file2.php, поэтому file1.php требуется правильно file3 и file4

4b9b3361

Ответ 1

Попробуйте добавить dirname(__FILE__) до пути, например:

require(dirname(__FILE__).'/../../dir2/file3.php');

Он должен включать файл, начинающийся с корневого каталога

Ответ 2

Для относительных путей вы можете использовать __DIR__ напрямую, а не dirname(__FILE__) (если вы используете PHP 5.3.0 и выше):

require(__DIR__.'/../../dir2/file3.php');

Не забудьте добавить дополнительную косую черту в начале пути в кавычках.

Увидеть:

Ответ 3

Правильный совет здесь - никогда не использовать такие вещи, как "../../" относительные пути в ваших веб-приложениях. Это трудно читать и ужасно для обслуживания.

  • Как вы можете подтвердить. Это очень сложно понять, на что вы указываете.

  • Если вам нужно изменить уровень папки вашего приложения или его частей. Он полностью подвержен ошибкам и, скорее всего, сломает что-то ужасное для отладки.

Вместо этого define несколько констант в вашем файле начальной загрузки для вашего основного пути, а затем используйте:

require(MY_DIR.'/dir2/file3.php');

Перемещение приложения оттуда так же просто, как замена констант MY_DIR в одном файле.

Ответ 4

Вы всегда можете использовать $_SERVER['DOCUMENT_ROOT'] в качестве допустимой отправной точки, а не прибегать к относительному пути. Просто еще один вариант.

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

Ответ 5

Я думаю, что ваш cdd - dir2. Попробуйте:

require("file3.php");
require("file4.php");