Почему браузер пытается загрузить мой файл сценария php? - PullRequest
2 голосов
/ 06 июля 2010

Просто быстро - я недавно написал скрипт php, который динамически создает XML-файл с использованием API DOM. Поэтому я использую это в начале:

$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, а не просто запустить его? Пожалуйста, кто-нибудь может мне помочь с этим. Я уверен, что это легко. // ----------------------------------- отредактирован Спасибо за все ответы. Да, я отправляю пользовательские заголовки, потому что это файл карты Google Maps, который я создаю динамически.

header ('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 ]

6 голосов
/ 06 июля 2010

Поскольку ваш веб-сервер неправильно настроен для обработки сценариев PHP.

1 голос
/ 06 июля 2010

Я предполагаю, что эта команда отправляет заголовок:

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

Если вы пишете файл на сервере и не собираетесь отправлять ответ клиенту, почему вы отправляете заголовокклиенту?

Если ваш PHP-файл просто должен записать файл на сервере и больше ничего не делать, не отправляйте заголовок или что-либо еще клиенту.

Если это непомогите, попробуйте перефразировать ваш вопрос.На сегодняшний день вы получили самые разные ответы на самые разные проблемы.

1 голос
/ 06 июля 2010

Если браузер пытается загрузить исходный код PHP, это означает, что Apache либо не настроен для запуска интерпретатора PHP, и / или, если вы используете операционную систему Linux, Unix или Mac OS X, Apache сделал нет разрешения на выполнение сценария PHP.

Вы должны следовать инструкциям на Вручную сконфигурировать PHP5 и Apache2 , чтобы убедиться, что ваш httpd.conf правильный.

Если, кроме того, вы используете Apache в Linux, Unix или Mac OS X, вам нужно открыть терминал cd в каталог, содержащий ваш PHP-скрипт, и:

chmod a+x SCRIPT.php

где SCRIPT.php - имя вашего скрипта PHP.

0 голосов
/ 06 июля 2010

Я предполагаю, что браузер не пытается загрузить скрипт PHP, но пытается загрузить файл KML. Закомментируйте строку header() и посмотрите, работает ли она. При локальном сохранении файла не нужно включать header().

0 голосов
/ 06 июля 2010

Возможно, вы не отправляете правильные заголовки:

<?php header ("content-type: text/xml");
0 голосов
/ 06 июля 2010

Я испытал, что это происходит из-за какой-то ошибки в .htaccess, это может показаться абсурдным, потому что я не упомянул ничего, что можно увидеть в .htaccess. Тебе стоит присмотреться к нему.

0 голосов
/ 06 июля 2010

Если расширение файла .php и ваш веб-сервер настроен правильно, он запустит его.

Вы указываете тип контента application/xxx, поэтому большинство браузеров принудительно загружают и используют имя вашего скриптав качестве имени файла.

Если вы хотите, чтобы имя файла отличалось от имени вашего файла php, используйте:

header('Content-Disposition: attachment; filename=your_requested_file.kml');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...