【问题标题】:Wrapper is disabled in the server configuration by allow_url_include=0包装器在服务器配置中被allow_url_include = 0禁用
【发布时间】:2011-10-16 18:30:32
【问题描述】:

我正在尝试使用AJAX 调用检索页面内容。我在页面包装器中有一系列链接。当我单击一个链接时,它会加载一个 JavaScript 函数,该函数从 php 脚本中检索页面内容。在这种情况下,我正在我的localhost 上进行开发,但在生产中,该脚本将与执行AJAX 调用的文件位于相同的根文件夹和域中。我将响应用作div 的内容。内容不是纯粹的PHP,我的意思是虽然它是由php生成的,但它具有HTML元素,如divs和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。

编辑:我想我可能发现了问题; AJAX 从中检索内容的 php 文件正在使用 require_once。它需要的文件位于同一根文件夹中的同一台服务器上,但它是一个目录。然而,这产生了一个新问题:我得到了内容,但并不完全。例如,在文件中我有这个:

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

我只收到第一个字母,这适用于我 echo 的其他 php 内容。

【问题讨论】:

    标签: php javascript ajax


    【解决方案1】:

    allow_url_include 只影响include()require(),您仍然可以使用PEAR HTTP_Request2 模块或curl 函数来获取网页。

    include() 用于远程网页被认为是一种“不好的做法”,可能会带来安全风险。例如,如果您使用include($var); 并且某些攻击者设法将 $var 替换为 http://hacksite.tld 他/她可以“注入”代码...

    【讨论】:

      【解决方案2】:

      不用担心,只需使用file_get_contents(),然后使用您检索到的内容在您的文档中写入一个新文件,然后在您的文件中使用include 文件。您现在包含的文件已准备好使用cssjavascript 等进行任何您想要的更改。这基本上是包装器的作用。

      【讨论】:

        【解决方案3】:

        那是因为您使用的是完整的网址。 请尝试以下方法:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-06-10
          • 2018-01-22
          • 2017-08-14
          • 2019-03-06
          • 2016-08-25
          • 1970-01-01
          相关资源
          最近更新 更多