2009-05-21 7 views
0

Я немного запутался в том, как настроить мой сервер Apache. Я использую Apache 2.2.11Выполнение SVG и MathML для PHP на Apache

Возьмите эти 2 страницы как хороший пример:

HTML XHTML

Они оба один и тот же синтаксис, но расширение отличается. Первый файл имеет HTML как расширение, второй имеет XHTML в качестве расширения.

Сервер в фоновом режиме имеет следующий набор:

AddType application/xhtml+xml .xhtml 

Поступая так, то MathML и SVG правильно отображаются.

Теперь большинство веб-сайтов работают с PHP в любом случае. Я установил это в своем Apache:

AddType application/x-httpd-php .php 

Стандартный синтаксис и все. не

Но если я хочу, чтобы мои PHP страницы для отображения MathML и SVG тоже, я думаю, что мне нужно сделать это:

AddType application/xhtml+xml .php 
AddType application/x-httpd-php .php 

Но это не работает, PHP больше не разбирает.

Итак, как я могу убедиться, что PHP все еще работает нормально, и в то же время я могу использовать такие вещи, как MathML и SVG в комбинации?

ответ

4

Если у вас есть PHP-скрипт, выводящий что-то другое, отличное от HTML, вам просто нужно установить HTTP-заголовок контента в своем скрипте.

, например, если у вас есть сценарий под названием xml.php, который выводит XML, он должен включать в себя строку:

<?php header('Content-type: application/xhtml+xml'); ?> 

Нет конфигурации Apache не нужно.

0

AddType directive управляет обработкой файлов .php на сервере. Файл получает передается программе или модулю, выполненной с возможностью обрабатывать тип приложения/х-HTTPD-PHP из-за соответствующим Action или AddHandler директивы, такие как это:

Action application/x-httpd-php "/php/php-cgi.exe" 

(То есть, если вы не обслуживающие PHP исходный файл сам, необработанный. Я сомневаюсь, что вы хотите это сделать.)

Сохраните конфигурацию так, как было раньше. Используйте функцию header, чтобы установить другой заголовок Content-Type для вывода вашего сценария, как показывает Frank's answer.