快一点 - 我最近编写了一个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);
这可能是可能的原因吗?
答案 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()
。