PHP - filesize() 返回一个空字符串

Posted

技术标签:

【中文标题】PHP - filesize() 返回一个空字符串【英文标题】:PHP - filesize() returns an empty string 【发布时间】:2015-12-23 05:45:18 【问题描述】:

我有一个奇怪的问题。我有一张图片需要上传到文件服务器。我正在使用 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 【参考方案1】:

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

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

【讨论】:

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

以上是关于PHP - filesize() 返回一个空字符串的主要内容,如果未能解决你的问题,请参考以下文章

file_get_contents('php://input') 总是返回一个空字符串

Android 返回空字符串 HTTP

php curl 在本地 XAMPP 上返回空字符串,但是相同的代码在生产服务器上返回正确的字符串

php empty 和空字符串区别

如何在 PHP 中解析一串布尔逻辑

为啥 json_encode 会返回一个空字符串