Я пытаюсь включить файл с URL-адреса, однако я получаю следующую ошибку.
Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in /Applications/MAMP/htdocs/diningtime/testsite/salims/index1.php on line 58 Warning: include(http://localhost/diningtime/templates/100/index.php): failed to open stream: no suitable wrapper could be found in /Applications/MAMP/htdocs/diningtime/testsite/salims/index1.php on line 58 Warning: include(): Failed opening 'http://localhost/diningtime/templates/100/index.php' for inclusion (include_path='.:/Applications/MAMP/bin/php/php5.4.4/lib/php') in /Applications/MAMP/htdocs/diningtime/testsite/salims/index1.php on line 58 Test
Просто интересно, если это так?
Мой код PHP включает код
<?php include "$location/index.php"; ?>
Я ценю вашу помощь в этом.
Вы используете полный URL-адрес по мере добавления пути, который сообщает PHP о попытке выполнить HTTP-запрос для извлечения этого файла. Это НЕ, как вы это делаете. Если этот ...100/index.php
выводит PHP-код, вы получите какой-то HTML или что-то в качестве результата include, а не php-код в файле. Помните – вы выбираете по URL-адресу, что означает, что это HTTP-запрос, что означает, что веб-сервер будет ВЫПОЛНИТЬ этот сценарий и доставить его вывод, а не просто выполнять его исходный код.
Веб-серверу нечего сказать, что HTTP-запрос для этого скрипта является вызовом include из другого скрипта PHP на том же сервере. Так же легко было бы запросить этот скрипт от какого-то хакера, скрывающегося в России, желающего украсть ваш исходный код. Вы хотите, чтобы ваш исходный код был видимым для всего мира?
Для локальных файлов вы никогда не должны использовать полномасштабный URL-адрес. это ужасно неэффективно и не будет делать то, что вы хотите. почему бы просто не
include('/path/to/templates/100/index.php');
вместо этого, который будет локальным запросом только для файлов, без включенного этапа HTTP?
У меня была аналогичная проблема.
Учитывая сообщение «Marc B's», очевидно, что использование абсолютных URL-адресов не является отличной идеей, даже если это возможно, отредактировав php.ini как «ficuscr». Я не уверен, что это обходное решение будет работать для вашей конкретной ситуации, поскольку оно по-прежнему требует корректировки каждой страницы в зависимости от того, где она находится в вашей структуре папок, но это делает вещи проще, если, как и я, у вас есть много Веб-сайт.
<?php $root="../";?> <?php include($root . 'folder-A/file_to_be_included_1.php');?> <?php include($root . 'folder-A/file_to_be_included_2.php');?> <?php include($root . 'folder-B/file_to_be_included_3.php');?> <?php include($root . 'folder-B/file_to_be_included_4.php');?> <?php include($root . 'folder-B/sub-folder/file_to_be_included_5.php');?>
Для меня это означает, что если я переместил страницу в другое место в структуре папок, например, в подпапку своего текущего местоположения, все, что мне нужно сделать, это изменить <?php $root="../";?>
чтобы стать <?php $root="../../";?>
например