PHP для включения всех файлов из корневого каталога (например, CMS) - PullRequest
0 голосов
/ 05 июня 2011

Мне нужно создать подпапки с собственными файлами index.php внутри них для моих страниц. Однако, когда я включаю файлы верхнего и нижнего колонтитула в корневой каталог, сайт ломается, поскольку файл заголовка ищет все файлы CSS и JavaScript в текущем каталоге.

Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 05 июня 2011

Вы можете использовать относительные пути в include и .., чтобы перейти в каталог.

include('../functions.php');

Это будет включать functions.php из родительской папки. Если бы это было 2 папки, это было бы ../../functions.php

Это наиболее распространенный способ включения вещей в другие папки, фактически обеспечивающий относительный, но прямой путь. Использование синтаксических анализаторов include_path может работать, но не так переносимо.

Просто быстрое сравнение плана выполнения обоих подходов:

Использование include('../functions.php');:

Проверить родительскую папку, открыть functions.php

Используя include_path, скажем, только 3 пути в списке, и include('functions.php');

Проверить текущую папку, файл не существует Проверьте первый путь в include_path, файл не существует Проверьте второй путь в include_path, файл не существует Проверьте третий путь в include_path, откройте functions.php

Тогда вы должны надеяться, что кто-то не поместит файл functions.php в один из этих других включенных путей ...

0 голосов
/ 05 июня 2011

Для серверной части добавьте корень в настройку include_path (или, если вы не собираетесь включать откуда-либо еще, замените include_path на корень), и вы сможете ссылаться к файлам в нем из любого места.

На стороне клиента, вы бы использовали тег <base>, чтобы сообщить браузеру, откуда начинаются URL-адреса (то есть, где в конечном итоге указываются относительные URL-адреса). Это действительно нужно, только если вы связываете CSS и JS, а не включаете их, но это более распространенный сценарий. (Обычно вы включаете PHP и ссылаетесь на CSS / JS.)

...