Intereting Posts
Как массовое обновление данных mysql одним запросом? Неустранимая ошибка: допустимый размер памяти 134217728 байт исчерпан (пытался выделить 87 байт) Использование C ++ для ускорения PHP Захват заголовка веб-сайта с использованием DOM CodeIgniter – вызов функции-члена select () для не-объекта Как запустить sql-запрос внутри цикла while другого запроса Предупреждение: session_start (): не удается отправить cookie сеанса – уже отправленные заголовки (вывод запущен в PHP: существует ли безопасный способ извлечения ($ _ POST) Является ли шифрование AJAX для проверки подлинности с помощью jQuery? SELECT * FROM help Java 1.6 Сбой при вызове фоновой задачей Symfony Исключение произошло при выполнении «INSERT INTO events (user_id, ET1, ET2) VALUES (?,?,?)» С параметрами : Как отправить пустой массив из формы HTML Form на PHP Почему функция PHP без параметров требует скобок? Получение последних 5 элементов массива php

Функции перестают работать, когда файл включен в корневой путь (ведущая косая черта)

Мои PHP-файлы в моем корневом каталоге INCLUDE header.php. Header.php INCLUDEs functions.php. Я добавляю новые страницы в подкаталог, поэтому я добавил ссылки на все мои ссылки в header.php: CSS, пункты меню и последующий INCLUDE на functions.php. CSS и пункты меню отлично работают на этой странице в подкаталоге, но функции не работают. В функциях, которые, как представляется, нуждаются в ведущих косах, нет ссылок.

Использует ли комбинация include и lead slashes модификационные функции?

На странице в корневом каталоге:

 include('header.php'); 

На странице в подкаталоге:

 include('/header.php'); 

Из header.php:

 include('/functions.php'); 

И функция, которая больше не работает (вызывается со страниц в корневом каталоге или подкаталоге):

 function show_date($array_name){ if (date("YF j",strtotime($array_name["exhibit_open"])) == date("YF j",strtotime($array_name["exhibit_close"]))){ echo date("F j, Y",strtotime($array_name["exhibit_open"])); } elseif (date("Y",strtotime($array_name["exhibit_open"])) != date("Y",strtotime($array_name["exhibit_close"]))) { $first_date_format = "F j, Y"; echo date($first_date_format,strtotime($array_name["exhibit_open"])). " - ". date("F j, Y",strtotime($array_name["exhibit_close"])); } elseif (date("F",strtotime($array_name["exhibit_open"])) != date("F",strtotime($array_name["exhibit_close"]))){ $first_date_format = "F j"; echo date($first_date_format,strtotime($array_name["exhibit_open"])). " - ". date("F j, Y",strtotime($array_name["exhibit_close"])); } else { $first_date_format = "j"; echo date("F j",strtotime($array_name["exhibit_open"])). " - ". date($first_date_format,strtotime($array_name["exhibit_close"])). ", ". date("Y",strtotime($array_name["exhibit_close"])); } 

}

Related of "Функции перестают работать, когда файл включен в корневой путь (ведущая косая черта)"

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

При этом, когда вы запрашиваете страницу в корневом каталоге, она запрашивает header.php в корневом каталоге, который, в свою очередь, будет запрашивать функции functions.php в корневом каталоге. Однако, если вы запрашиваете из подкаталога, ../header.php будет ссылаться на header.php в корневом каталоге, но весь этот файл будет включен, а затем его php-страница в подкаталоге, которая в конечном итоге пытается включить /functions.php . Он должен будет запросить ../functions.php , но это приведет к ../functions.php , что все в корневом каталоге перестанет работать.

Я бы предложил установить переменную в header.php вдоль строк $root = $_SERVER['DOCUMENT_ROOT']; Затем все включенные в header.php должны быть как include($root."/functions.php");

$_SERVER['DOCUMENT_ROOT'] предоставит вам объектный URL-адрес корню, который позволит вам убедиться, что вы ссылаетесь на правильное место независимо от того, откуда вы запрашиваете header.php.

Стандартные пути 101:

/path/somefile – ведущая / привязывает эту структуру пути к ROOT файловой системы, например, это эквивалент C:\path\somefile .

path/somefile – нет ведущего / . ОС будет использовать программы «текущая работающая» директория в качестве основы для пути, поэтому, если вы находитесь в оболочке, somefile в /home/foo , тогда будет выполняться поиск somefile в /home/foo/path/somefile .

../somefile . .. ссылается на каталог PARENT текущего рабочего каталога, поэтому, если вы находитесь в /home/foo , тогда ../somefile будет искать как /home/somefile .

Обратите внимание, что вы можете иметь нечувствительные пути, такие как

/../../../../somefile . Это будет приемлемо, но бессмысленно, поскольку вы оба закрепляете путь в корне файловой системы, а затем пытаетесь выйти из этого корня, что невозможно. Этот путь является операционным эквивалентом /somefile .

Include и Require буквально вытаскивать код в исполняемый файл, поэтому нужно следить за тем, что файлы в подкаталоге запущены из рабочего каталога.

Пример:

  |-templates-|-header.php Docroot--| |-inc-|-functions.php | |-index.php 

Index.php

 <?php include 'template/header.php'; ... ?> 

шаблон / header.php

 <?php include 'inc/functions.php'; ... ?> 

потому что код header.php выполняется из docroot из-за включения.