【问题标题】:PHP - filesize() returns an empty stringPHP - filesize() 返回一个空字符串
【发布时间】:2026-02-22 08:45:02
【问题描述】:

我有一个奇怪的问题。我有一张图片需要上传到文件服务器。我正在使用 php 来执行此操作。图片权限如下

-rw-r--r--. 1 apache apache  148041 Dec 22 08:25 Not.jpg

我检查了文件是否存在。我已经下载了文件,发现没问题。它的原始大小是 60 KB。权限也很好。

当我执行以下操作时

$filepath = "../uploads/".$file_name;
$image = fopen($filepath, "rb");
echo file_exists($filepath).' ';
echo filesize($filepath). 'bytes ';
echo exif_read_data($filepath). ' ';

输出是 1 bytes 200

1 - File Exists
bytes - This is where the error occurs. filesize() is returning an empty string here
200 - server response

加载此文件的正确方法是什么?

【问题讨论】:

  • 尝试使用绝对路径。
  • @roullie 感谢您的快速回复。我试过了。但还是一样。
  • 你可以用getimagesize试试看这个函数是否也返回相同的值
  • 还启用错误报告并检查filesize功能,如果失败,将发出E_WARNING。
  • @ChetanAmeta getimagesize 返回 false

标签: php file amazon-s3 filesize


【解决方案1】:

作为对fopen manual of PHP 的参考,模式应该是读或写。您正在使用未定义模式 rb。试试这个

$image = fopen($filepath, "r");

【讨论】:

  • 您没有阅读文档的注意部分。第三段解释了模式后面的b 标志:要使用这些标志,请将“b”或“t”指定为模式参数的最后一个字符。