【问题标题】:PHP script not getting executedPHP脚本没有被执行
【发布时间】:2012-04-02 10:59:05
【问题描述】:

我已经使用 cURL 解决方案来解决 XSS,但它存在问题。 我的 proxy.php 文件内容是:-

<?php
    $url = "http://www.yahoo.com";
    $ch = curl_init();
    $timeout = 5;
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);
    echo $file_contents;
?>

这就是我尝试执行 php 脚本的方式

$("#tempButton").click(function(){
    $("#pageContent").load('http://localhost:8080/proof/proxy.php',function() {
        var t = $("#pageContent").html();
        alert(t);
    });
});

但是变量 t 显示的是 proxy.php 文件的内容,而它应该显示的是在 proxy.php 文件中设置的 yahoo.com 的内容。我在做傻事吗。 #FirstTimePHP

【问题讨论】:

  • localhost:8080/proof/proxy.php 中删除localhost:8080,它应该只是'/proof/proxy.php'。此外,请检查 firebug 和/或 chromium 检查器以获取错误详细信息。
  • 尝试直接访问您的页面(只需浏览到 proxy.php),或使用 Firebug 的 Net 选项卡(或任何等效工具)检查请求的输出
  • 您可能没有在您的 Web 服务器中注册 PHP。如果是这样,当您从 Web 访问它时,您永远不会看到放在 &lt;?php ?&gt; 标签内的 php 文件的 content
  • 当我从 Web 浏览器看到 proxy.php 时,它实际上向我显示了我的 php 文件的内容,没有别的。它就像一个文本文件,我现在正在使用 tomcat apache 服务器。你能告诉我如何检查 PHP 是否在我的 tomcat 中注册?我想这是每个 Web 服务器的基本功能
  • @JoachimIsaksson 有正确的答案,确保您的 HTTP 服务器正确地提供 PHP 文件。从一个简单的 Hello World 开始。

标签: php javascript jquery curl xss


【解决方案1】:

由于变量 t 显示文件的内容,服务器软件不能将你的脚本识别为 PHP。

发生这种情况的原因有很多。没有开始标签是 1,但你当然有这些。

另一个可能的原因是 php 没有作为模块加载到服务器软件中。

另一个可能的原因是服务器不解析带有php扩展名的文件(这是可配置的)。

你应该从基础开始。忽略javascript,而是手动调用url,看看你得到了什么。您很有可能会看到代码。

如果发生这种情况,请确保服务器软件(通常是 apache)设置为识别扩展 php 与 php 模块相关联。最后确保 PHP 安装正确。

【讨论】:

  • 谢谢 Peter 和 Joachimlasksson..您的回答很有意义并且很有帮助。实际上我的服务器无法识别 php 文件,我正在处理它。
【解决方案2】:

让你的 proxy.php 像这样。

    <?php
        if(in_array('curl', get_loaded_extensions())) { 
                $url = "http://www.yahoo.com";
                $ch = curl_init();
                $timeout = 5;
                curl_setopt ($ch, CURLOPT_URL, $url);
                curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
                $file_contents = curl_exec($ch);
                curl_close($ch);
                echo $file_contents;
                }
        else {
        echo 'No cUrl here';
        }
?>

【讨论】:

  • 虽然是好的做法,但这对解决操作问题没有帮助。如问题中所述,正在输出 php 脚本的代码。检查是否安装了 curl 只会意味着输出更多代码。
  • 我认为我们不能检查 is_php_intalled() 之类的东西!!
猜你喜欢
  • 2015-10-28
  • 2012-10-12
  • 2012-08-26
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多