Оболочка отключена в конфигурации сервера: allow_url_include = 0 - PullRequest
5 голосов
/ 31 июля 2011

Я пытаюсь получить содержимое страницы с помощью вызова AJAX.У меня есть ряд ссылок в оболочке страницы.Когда я нажимаю на ссылку, она загружает функцию JavaScript, которая извлекает содержимое страницы из скрипта php.В этом случае я работаю на моем localhost, но в процессе работы сценарий будет находиться в той же корневой папке и домене, что и файл, который вызывает AJAX.Я использую ответ как контент для div.Контент не просто PHP, и я имею в виду, что он генерируется php и содержит HTML элементов, таких как div s и span.Это в основном то, что происходит между открывающим и закрывающим тегами тела.Из-за этого я не уверен, что могу просто использовать json_encode.

Вместо загрузки контента в div, я получаю следующую ошибку:

Предупреждение: require_once () [function.require-once]: http: // обертка отключена в конфигурации сервера с помощью allow_url_include = 0

После прочтения на allow_url_include кажется, что это обычно отключенопо умолчанию.Я предполагаю, что эта функция допускает некоторые серьезные атаки на сайт.Это тот случай.Если это так, как я могу получить содержимое из другого файла?

Я пытался использовать функцию загрузки JQuery:

$('#content').load('pages/test_page.php');

, но с точно такими же результатами.

Это сводит меня с ума!TIA.

РЕДАКТИРОВАТЬ: Я думаю, что, возможно, нашел проблему;php файл, из которого AJAX извлекает контент, использует require_once.Требуемый файл находится на том же сервере в той же корневой папке, но был одним каталогом вверх.ОДНАКО, это создает новую проблему: я получаю контент, но не полностью.Например, в файле, который у меня есть, это:

Title:  <?php echo $details['title']; ?>

Я получаю только первую букву, и это справедливо для другого php контента, который я echo.

Ответы [ 3 ]

9 голосов
/ 31 июля 2011

allow_url_include влияет только на include() и require(), вы все равно можете использовать модуль PEAR HTTP_Request2 или функции curl для извлечения веб-страниц.

Использование include() для удаленных веб-страницсчитается "плохой практикой" и может представлять угрозу безопасности.Например, если вы используете include($var); и некоторым злоумышленникам удастся заменить $ var на http://hacksite.tld, он / она может "ввести" код ...

1 голос
/ 19 марта 2013

Не беспокойтесь, просто используйте file_get_contents(), затем напишите новый файл в ваших документах с содержимым, которое вы получили, затем include файл в вашем файле. включенный вами файл теперь готов к любым нужным изменениям, используя css, javascript и т. д. Это в основном то, что делает оболочка.

0 голосов
/ 10 февраля 2015

это потому, что вы используете полный URL.вместо этого попробуйте следующее:

$('#content').load('test_page.php');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...