lstat

(PHP 4, PHP 5, PHP 7, PHP 8)

lstat获取关于文件或符号链接的信息

描述

lstat(string $filename): array|false

收集由 filename 指定的文件或符号链接的统计信息。

参数

filename

文件或符号链接的路径。

返回值

有关 lstat() 返回的数组结构的信息,请参见 stat() 的手册页。此函数与 stat() 函数相同,只是如果 filename 参数是符号链接,则返回符号链接的状态,而不是符号链接指向的文件的状态。

如果失败,则返回 false

错误/异常

如果失败,将发出 E_WARNING

示例

示例 #1 stat()lstat() 的比较

<?php
symlink
('uploads.php', 'uploads');

// 对比 uploads.php 和 uploads 的信息
array_diff(stat('uploads'), lstat('uploads'));
?>

上面的示例将输出类似于以下内容

两个文件之间不同的信息。

Array
(
    [ino] => 97236376
    [mode] => 33188
    [size] => 34
    [atime] => 1223580003
    [mtime] => 1223581848
    [ctime] => 1223581848
    [blocks] => 8
)

注释

注意: 此函数的结果被缓存。有关详细信息,请参见 clearstatcache()

提示

从 PHP 5.0.0 开始,此函数也可以与某些 URL 包装器一起使用。请参阅 支持的协议和包装器,以确定哪些包装器支持 stat() 函数系列的功能。

参见

  • stat() - 获取关于文件的信息

添加注释

用户贡献的注释 2 个注释

-2
HP@SG
3 年前
仅供参考,并回复 4 年前 "salsi at icosaedro dot it" 留下的一条消息

在 64 位 Linux 系统上可以处理大于 2 GiB 的文件。

我在终端中的测试如下(使用 <?php ;?> 标签来对结果进行颜色标记,以便于阅读)

$ php -v

<?php
"
PHP 7.2.24-0ubuntu0.18.04.7 (cli) (built: Oct 7 2020 15:24:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24-0ubuntu0.18.04.7, Copyright (c) 1999-2018, by Zend Technologies
"
;?>

$ date ; dd if=/dev/zero of=/tmp/php_test_huge bs=1024K count=2100 ; date ; ls -l /tmp/php_test_huge

<?php
"
Wed Nov 11 15:35:46 +08 2020
2100+0 records in
2100+0 records out
2202009600 bytes (2.2 GB, 2.1 GiB) copied, 4.79192 s, 460 MB/s
Wed Nov 11 15:35:51 +08 2020
-rw-r--r-- 1 harold harold 2202009600 Nov 11 15:35 /tmp/php_test_huge
"
;?>

$ php -r 'var_dump(lstat("/tmp/php_test_huge"));'

<?php
"
array(26) {
[0]=>
int(2050)
[1]=>
int(19923027)
[2]=>
int(33188)
[3]=>
int(1)
[4]=>
int(1000)
[5]=>
int(1000)
[6]=>
int(0)
[7]=>
int(2202009600)
[8]=>
int(1605079647)
[9]=>
int(1605080149)
[10]=>
int(1605080149)
[11]=>
int(4096)
[12]=>
int(4300808)
["
dev"]=>
int(2050)
["
ino"]=>
int(19923027)
["
mode"]=>
int(33188)
["
nlink"]=>
int(1)
["
uid"]=>
int(1000)
["
gid"]=>
int(1000)
["
rdev"]=>
int(0)
["
size"]=>
int(2202009600)
["
atime"]=>
int(1605079647)
["
mtime"]=>
int(1605080149)
["
ctime"]=>
int(1605080149)
["
blksize"]=>
int(4096)
["
blocks"]=>
int(4300808)
}
"
;?>
-3
salsi at icosaedro dot it
8 年前
此函数在 Linux 32 位(PHP 7.1.0-dev)上对于大于 2 GB 的文件会失败并返回 FALSE

$ dd if=/dev/zero of=/tmp/huge bs=1048576 count=2050
$ php -r 'var_dump(lstat("/tmp/huge"));'
--> Warning: lstat(): Lstat failed for /tmp/huge in Command line code on line 1

未测试 Windows。未测试 PHP 64 位。
To Top