file_get_contents没有输出svg

时间:2018-02-03 00:53:13

标签: php wordpress svg

我正在尝试使用php获取svg文件并将其输出到页面上。网站建立在Wordpress上。

<?php 
    echo file_get_contents("site.com/wp-content/themes/oaklandcentral/img/fb_logo.svg"); 
?>

什么都没有显示。实际链接是正确的,直接转到svg。有什么想法吗?

5 个答案:

答案 0 :(得分:1)

在回显svg之前使用:header("Content-Type: image/svg+xml");添加标题。有时浏览器假定默认情况下收到的数据是html。

答案 1 :(得分:0)

尝试使用以下代码。

$ opts = array(
  的 'http'=&GT;阵列(
    '方法'=&gt; “中GET”,
    'header'=&gt;“Accept-language:en \ r \ n”。
              “Cookie:foo = bar \ r \ n”
  )
);

$ context = stream_context_create($ opts);

$ file = file_get_contents('site.com/wp-content/themes/oaklandcentral/img/fb_logo.svg',false,$ context);

答案 2 :(得分:0)

Path is wrong, use file_get_contents( get_template_directory() . '/img/fb_logo.svg' )

答案 3 :(得分:0)

echo file_get_contents("site.com/wp-content/themes/oaklandcentral/img/fb_logo.svg");

假设:

  • 你的&#34;文件名&#34;字符串以协议开头,例如&#34; HTTP://&#34;

    您可以直接从浏览器访问该文件(即不是 文件/文件夹权限问题);

    file_get_contents返回FALSE? (E_WARNING告诉我吗? 你呢?)

我记得看到某些服务器未配置为允许file_get_contents (或带有URL的readfile),所以我会先检查一下(可能 allow_url_fopen 的php.ini ???)。

如果不是这种情况(或主机提供商的限制)并且您找不到问题的原因,那么CURL 工作(在大多数服务器上!)。

$url = 'http://example.com/path-to/fb_logo.svg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
$svg = curl_exec($ch);
curl_close($ch);

echo $svg;

修改

  1. 您还可以使用php include if you remove the xml header tag from your SVG file
  2. 我假设你想要显示SVG图像而不是文本代码,在这种情况下为什么不像其他任何图像一样<img src="<?php echo $mySvgFileUrl"; ?>">

答案 4 :(得分:0)

可能是什么问题。

  1. 该文件不在您认为的位置。

  2. 文件权限不允许代码读取文件。

  3. 尝试调试:

    <?php 
        $file = "site.com/wp-content/themes/oaklandcentral/img/fb_logo.svg";
        if ( file_exists($file) ) {
            echo file_get_contents($file); 
        } else {
            echo "File $file does not exist";
        }
    ?>
    

    尝试使用curl获取页面。看一下标题和原始的https响应。

    curl -v URL_TO_PAGE