Встановив на сайт. Налаштував даний компонент в адміністративній панелі Joomla 3.8. Яке ж було моє здивування, коли при кліці по посиланню [XML Sitemap] замість карти сайту відкрилася сторінка з помилкою 500 Internal Server Error.
Допомогла тема на. Причина була в зайвої рядку в компоненті карти.
У файлі "components / com_xmap / helpers / xmap.php" в рядку 12 бачимо запис:
require_once (JPATH_SITE. '/ includes / application.php');
Якщо закомментировать цей рядок то компонент зводиться.
Але, давайте розберемося, що ми відключили даним записом, і за що відповідає конструкція require_once?
require_once - конструкція одноразових включень.
У великих PHP сценаріях інструкції require застосовуються досить часто. Тому стає досить складно контролювати, як би випадково не включити один і той же файл декілька разів, що найчастіше призводить до помилки, яку складно виявити.
У PHP передбачено вирішення даної проблеми. Використовуючи конструкцію одноразового включення require_once можна бути впевненим, що один файл не буде включений двічі. Працює конструкція одноразового включення require_once так само, як і require. Різниця в її роботі лише в тому, що перед включенням файлу інтерпретатор перевіряє, чи включений вказаний файл раніше чи ні. Якщо так, то файл не буде включений знову.
Конструкція одноразового включення require_once дозволяє включати видалені файли, якщо така можливість включена в конфігураційному файлі PHP.
Включення віддалених файлів
PHP дозволяє працювати з об'єктами URL, як зі звичайними файлами. Пакувальники, доступні за умовчанням, служать для роботи з віддаленими файлами з використанням протоколу ftp або http.
Якщо "URL fopen-оболонки" включені в PHP (як в конфігурації за замовчуванням), ви можете специфікувати файл, що підключається з використанням URL (через HTTP), замість локального шляху. Якщо цільовий сервер інтерпретує цільовий файл як PHP-код, змінні можуть передаватися в підключається файл з використанням URL-рядки запиту, як в HTTP GET. Строго кажучи, це не те ж саме, що підключення файлу і спадкування їм області видимості змінних батьківського файлу; адже скрипт працює на віддаленому сервері, а результат потім підключається в локальний скрипт.
Для того, щоб вилучене включення файлів було доступно, необхідно в файлі конфігурації (php.ini) встановити allow_url_fopen = 1.
Зверніть увагу: Версії PHP для Windows до PHP 4.3.0 не підтримують можливість використання віддалених файлів цією функцією навіть в тому випадку, якщо опція allow_url_fopen включена.
Встановлювати чи настройку allow_url_fopen = 1, або просто закомментировать 12-й рядок у файлі "components / com_xmap / helpers / xmap.php" - вирішувати Вам. Я не став експериментувати з налаштуваннями PHP і прибрав require_once (JPATH_SITE. '/ Includes / application.php'); з коду компонента.
В наступній статті я описав процес створення пункту меню у вигляді шрифтової іконки.
На цьому сьогодні все. Успіхів Вам у розробці.
Але, давайте розберемося, що ми відключили даним записом, і за що відповідає конструкція require_once?