Problema di tipo docty che visualizza SVG con Safari

Ho diverse immagini SVG che mi piacerebbe impaginare su una pagina. Firefox e Chrome non mi hanno dato alcun problema, ma Safari sembra mostrare l'image SVG solo se e solo se il documento ha un'estensione ".xhtml". Se provo ad usare il codice PHP (e quindi un'estensione ".php"), lo stesso identico markup che ho usato nel documento ".xhtml" non visualizzerà più l'image SVG. Il problema è ovviamente, devo usare PHP per il progetto a portta di mano. Eventuali suggerimenti? Ecco il codice sorgente:

<?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> 

Il motivo .xhtml funziona in Safari e .html non è che Safari debba trattare il documento come XML per consentire SVG incorporato. Le ultime versioni di Firefox e Chrome utilizzano un parser HTML5 che consente di incorporare SVG in semplici documenti HTML, quindi dovrebbero funzionare con entrambi.

Per visualizzarlo correttamente in Safari è necessario impostare il tipo di contenuto su application/xhtml+xml . Usa questo nel tuo file PHP prima di printingre qualsiasi contenuto:

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

puoi impostare la tua configuration php per elaborare i file xhtml.

In questo esempio presumo che tu stia usando apache su debian / ubuntu

puoi cercare nel file /etc/apache2/mods-enabled/php5.conf

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

Potresti avere questa direttiva SetHandler in qualche altro file se stai usando un server web diverso o una distribuzione o un SO …

supponendo che tu sia su una casella unix, basta grep le directory / etc / apache o / etc / httpd

 grep -Ri sethandler /etc/apache