Есть ли руководство по ссылкам на пути в PHP?

Я знаю, как включать файлы, которые находятся в папках дальше по иерархии, но у меня проблемы с поиском пути обратно. Я решил использовать set_include_path по умолчанию, все дополнительные включения относительно пути на 2 уровня выше, но не имею ни малейшего понятия, как это записать.

Есть ли где-нибудь руководство, в котором подробно описаны ссылки на пути для PHP?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
3 791
2

Ответы 2

вероятно, проще использовать абсолютный путь для ссылки:

set_include_path('/path/to/files');

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

в качестве примера, учитывая образец структуры папок (/home/files):

index.php
test/
  test.php
test2/
  test2.php

// /home/files/index.php
include('test/test.php');

// /home/files/test/test.php
include('../test2/test2.php');

если вы вызовете index.php, он попытается включить следующие файлы:

/home/files/test/test.php // expected
/home/test2/test2.php // maybe not expected

что может быть не тем, что вы ожидаете. вызов test.php вызовет /home/files/test2/test.php, как и ожидалось.

в заключение, включение будет относиться к исходной точке вызова. Чтобы уточнить, это влияет на set_include_path(), если он также относительный. рассмотрите следующее (используя ту же структуру каталогов):

<?php
// location: /home/files/index.php
   set_include_path('../'); // our include path is now /home/

   include('files/test/test.php'); // try to include /home/files/test/test.php
   include('test2/test2.php'); // try to include /home/test2/test2.php
   include('../test3.php'); // try to include /test3.php
?>

где именно это начинается? это относительно apache, или он установлен в php.ini, или это сам каталог php?

atomicharri 09.11.2008 06:21

по умолчанию включение относится к месту вызова (т. е. каталог, в котором находится ваш скрипт, который вызывает include)

Owen 09.11.2008 06:24

что касается set_include_path ('../'); - если бы я хотел установить путь включения до 2-х каталогов, как бы я его поставил?

atomicharri 09.11.2008 07:40

извините неважно, разобрался что друг. представляет собой один шаг вверх

atomicharri 09.11.2008 07:45

Я обычно использую dirname для получения текущего пути, а затем использую его как основу для вычисления всех будущих имен путей.

Например,

$base = dirname( __FILE__ ); # Path to directory containing this file
include( "{$base}/includes/Common.php" ); # Kick off some magic

У вас есть мой +1, но, пожалуйста, избегайте "{$ var}". Почему не $base . '/includes/Common.php'?

eyelidlessness 09.11.2008 09:26

Я предпочитаю устанавливать путь включения и не использовать переменные в каждом операторе include / require.

troelskn 09.11.2008 15:13

без век: мне легче читать на ощупь. Между ними нет разницы.

Rob 03.12.2008 08:02

Другие вопросы по теме