为什么浏览器试图下载我的PHP脚本文件?

时间:2010-07-06 10:07:21

标签: php firefox browser

快一点 - 我最近编写了一个php脚本,它使用API​​ DOM动态创建XML文件。所以我在开始时使用它:

$dom = new DOMDocument('1.0', 'UTF-8');

最后它看起来像这样:

$server = $_SERVER['DOCUMENT_ROOT'];
$path_to_xml = "$server/project/file.xml"; 
file_put_contents($path_to_xml, $dom->saveXML());

它做了我想要的一切,但为什么浏览器试图下载这个PHP脚本而不是只运行它?请有人帮我这个。我很确定这很简单。 // -----------------------------------编辑 感谢所有回复。是的我正在发送自定义标头,因为它是我正在动态创建的谷歌地图kml文件。

标题('Content-type:application / vnd.google-earth.kml');

// Creates the root KML element and appends it to the root document.
$node = $dom->createElementNS('http://earth.google.com/kml/2.0', 'kml');
$parNode = $dom->appendChild($node);

这可能是可能的原因吗?

7 个答案:

答案 0 :(得分:6)

因为您的Web服务器未正确配置为处理PHP脚本。

答案 1 :(得分:1)

如果浏览器试图下载PHP源代码,那么这意味着Apache未配置为运行PHP解释器和/或如果您使用的是Linux,Unix或Mac OS X操作系统,那么没有执行PHP脚本的权限。

您需要按照Manually Configure PHP5 and Apache2上的说明操作,以确保httpd.conf正确无误。

此外,如果您在Linux,Unix或Mac OS X上运行Apache,则需要在包含PHP脚本的目录中打开终端cd,并且:

chmod a+x SCRIPT.php

其中SCRIPT.php是PHP脚本的名称。

答案 2 :(得分:1)

我假设此命令发送标题:

header('Content-type: application/vnd.google-earth.kml');

如果您在服务器上编写文件而不打算向客户端发送任何响应,为什么要向客户端发送标头?

如果您的PHP文件只是在服务器上写一个文件而不做任何其他事情,请不要向客户端发送标题或其他任何内容。

如果这没有帮助,请尝试重新提问。到目前为止,您已收到各种不同问题的答复。

答案 3 :(得分:0)

如果文件扩展名为.php且您的网络服务器配置正确,则会运行它。

您指定application/xxx内容类型,以便大多数浏览器会强制下载并使用您的脚本名称作为文件名。

如果要强制使用与php文件名不同的文件名,请使用:

header('Content-Disposition: attachment; filename=your_requested_file.kml');

答案 4 :(得分:0)

我经历过它是由于.htaccess中的一些错误而发生的,它可能看起来很荒谬,因为我没有在.htaccess中提到任何东西。你应该仔细看看它。

答案 5 :(得分:0)

您可能没有发送正确的标题:

<?php header ("content-type: text/xml");

答案 6 :(得分:0)

我的猜测是浏览器没有尝试下载PHP脚本,但IS试图下载KML文件。注释掉header()行并查看它是否有效。在本地保存文件时,您不需要包含header()