Php 使用Safari显示SVG时出现Doctype问题

Php 使用Safari显示SVG时出现Doctype问题,php,xhtml,safari,svg,Php,Xhtml,Safari,Svg,我想在一个页面上布局几个SVG图像。Firefox和Chrome没有给我任何问题,但是Safari似乎只在文档有“.xhtml”扩展名时才显示SVG图像。如果我尝试使用PHP代码(以及“.PHP”扩展名),则“.xhtml”文档中使用的完全相同的标记将不再显示SVG图像。问题当然是,我必须为手头的项目使用PHP。有什么建议吗?以下是源代码: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE svg PUBLIC "-//W3C//

我想在一个页面上布局几个SVG图像。Firefox和Chrome没有给我任何问题,但是Safari似乎只在文档有“.xhtml”扩展名时才显示SVG图像。如果我尝试使用PHP代码(以及“.PHP”扩展名),则“.xhtml”文档中使用的完全相同的标记将不再显示SVG图像。问题当然是,我必须为手头的项目使用PHP。有什么建议吗?以下是源代码:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="de" xmlns:xml="http://www.w3.org/XML/1998/namespace">
<head>
<title>SVG Safari Test</title>
</head>
<body>
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve"><circle cx="250" cy="250" r="238.048"/></svg>
</body>
</html>

SVG Safari测试

原因是
.xhtml
可以在Safari中使用,而
.html
不能使用,因为Safari需要将文档视为XML,以允许嵌入SVG。Firefox和Chrome的最新版本使用了一种支持SVG嵌入普通HTML文档的浏览器,因此它们应该同时使用这两种浏览器

要在Safari中正确呈现,需要将内容类型设置为
application/xhtml+xml
。在输出任何内容之前,请在PHP文件中使用此选项:

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


原因是
.xhtml
可以在Safari中使用,而
.html
不能使用,因为Safari需要将文档视为XML,以允许嵌入SVG。Firefox和Chrome的最新版本使用了一种支持SVG嵌入普通HTML文档的浏览器,因此它们应该同时使用这两种浏览器

要在Safari中正确呈现,需要将内容类型设置为
application/xhtml+xml
。在输出任何内容之前,请在PHP文件中使用此选项:

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

您可以设置php配置来处理xhtml文件

在本例中,我假设您正在debian/ubuntu上使用apache

您可以查看文件/etc/apache2/mods enabled/php5.conf

<IfModule mod_php5.c>

<FilesMatch "\.xhtml$">
SetHandler application/x-httpd-php
</FilesMatch>

</IfModule>

您可以设置php配置来处理xhtml文件

在本例中,我假设您正在debian/ubuntu上使用apache

您可以查看文件/etc/apache2/mods enabled/php5.conf

<IfModule mod_php5.c>

<FilesMatch "\.xhtml$">
SetHandler application/x-httpd-php
</FilesMatch>

</IfModule>

非常感谢!这非常有效。也感谢你解释了它背后的原理。作为一个新手,我很感激。非常感谢!这非常有效。也感谢你解释了它背后的原理。作为一个新手,我很欣赏这一点。