我的文件是可写的,为什么我看到filesize()和fread()错误?

时间:2015-05-29 10:23:11

标签: php

我正在尝试从服务器插入图像作为转换为base64的背景图像。

我收到这些错误:

  

警告:filesize():stat失败

     

警告:fread():长度参数必须大于0

我已经读过这两个错误都可能是因为文件不可写,但我已经使所有文件都可写(图像文件,它所在的文件夹和代码所在的文件),但仍然没有乐趣。

这是php代码

<?php
$img_source = "image.jpg";
$img_binary = fread(fopen($img_source, "r"), filesize($img_source));
$img_string = base64_encode($img_binary);
?>

这是我的css / php

body { background-image:url('data:image/gif;base64,<?php echo $img_string; ?>'); 

我之前使用 get_file_contents 获得了我想要的结果,但它非常慢。这是我的老方法。

<?php echo base64_encode(file_get_contents($img_url.'/'.$image)) ?>

1 个答案:

答案 0 :(得分:1)

使用file_get_contents您处于正确的轨道,但似乎您实际上使用的是URL,而不仅仅是文件路径(因此file_get_contents使用HTTP来获取文件内容)。尝试将其更改为:

<?php
$img_source = "image.jpg";
$img_string = base64_encode(file_get_contents($img_source));
?>