2012-07-09 14 views
5

Tôi muốn tạo tệp SVG bằng PHP và sau đó đưa tệp đó vào tệp HTML. Dưới đây là những gì tôi có cho đến nay (sau this tutorial)Làm cách nào để tải tệp SVG được tạo bằng PHP?

svg.php:

<?php 
header("Content-type: image/svg+xml"); 
?> 
<?xml version="1.0" encoding="iso-8859-1"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" 
"http://www.w3.org/TR/2001/ 
REC-SVG-20010904/DTD/svg10.dtd"> 

<svg width="310" height="140" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <g style="stroke:black;fill:lightgreen" transform="translate(30,30)"> 
     <rect x="10" y="10" width="100" height="30" style="stroke-width:4"/> 
     <circle cx="170" cy="25" r="20" style="stroke-width:4"/> 
     <line x1="265" y1="10" x2="200" y2="70" style="stroke-width:4"/> 
     <text x="80" y="90" style="font:size: 8">Basic shapes</text> 
    </g> 
</svg> 

index.html

<!DOCTYPE html> 
<html> 
<head> 
<style type="text/css"> 
html,body, #MOSVG { 
    height: 100%; 
    width: 100%; 
    padding:0; 
    margin:0; 
} 
</style> 
</head> 
<body> 
    <object data="svg.php" type="image/svg+xml" id="MOSVG" /> 

</body> 
</html> 

Khi tôi nhìn vào index.html tất cả tôi thấy là một trống trang. Không có cảnh báo/lỗi trên bảng điều khiển. Nhật ký lỗi Apache (Tôi đang sử dụng XAMPP) cung cấp cho [Mon Jul 09 14:36:15 2012] [error] [client 127.0.0.1] script 'C:/xampp/htdocs/svgtest/public/svg.php' not found or unable to stat, referer: http://localhost/svgtest/public/. Họ đang ở trong cùng một thư mục.

+0

Công khai không được công khai – Gntem

+0

Đã tìm thấy/đã khắc phục, vẫn gặp sự cố. – SomeKittens

+1

nếu bạn xóa dòng nó hiển thị svg – Gntem

Trả lời

8

GeoPhoenix đã trả lời ở trên, tôi figured tôi muốn đặt nó vào một câu trả lời để có một chính thức một:

nếu bạn loại bỏ dòng <?xml?> nó ám chỉ rằng svg

PHP có thể thấy <? làm thẻ mở cho mã PHP (chứ không phải khai báo XML), nhờ cài đặt short-open-tag (thanks to fvu). Đây là một sửa chữa dễ dàng, tôi chỉ thay thế

<?xml version="1.0" encoding="iso-8859-1"?> 

với

<?php echo '<?xml version="1.0" encoding="iso-8859-1"?>';?> 

này có kết quả dự định tương tự và không gây ra lỗi cú pháp.

+0

Đây không phải là một 'sửa chữa', nó là một hack .. – YemSalat