PHP 8.4.23 Released!

lstat

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

lstat给出一个文件或符号连接的信息

说明

function lstat(string $filename): array |false

获取由 filename 指定的文件或符号连接的统计信息。

参数

filename

文件或符号连接的路径。

返回值

有关 lstat() 返回的数组结构见手册中 stat() 函数的页面。 本函数和 stat() 函数相同,只除了如果 filename 参数是符号连接的话,则该符号连接的状态被返回,而不是该符号连接所指向的文件的状态。

失败时返回 false

错误/异常

失败时抛出 E_WARNING 警告。

示例

示例 #1 stat() lstat() 的对照

<?php
symlink('uploads.php', 'uploads');
// Contrast information for uploads.php and uploads
array_diff(stat('uploads'), lstat('uploads'));
?>

以上示例的输出类似于:

Information that differs between the two files.

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

注释

注意: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

小技巧

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • stat() - 给出文件的信息

发现了问题?

了解如何改进此页面提交拉取请求报告一个错误
+添加备注

用户贡献的备注 2 notes

up
-2
HP@SG
5 years ago
Just for information and in reply to a previous message left 4 years ago by "salsi at icosaedro dot it" :
Files larger than 2 GiB can be handled on 64-bit Linux systems.
My test in a terminal is as follow (using <?php ;?> tags to colour the results for ease of reading) :
$ 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)
}
"
;?>
up
-3
salsi at icosaedro dot it
10 years ago
This function fails and returns FALSE with files larger than 2 GB on Linux 32-bits (PHP 7.1.0-dev):
 $ 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
Window not tested. PHP 64-bits not tested.
+添加备注

AltStyle によって変換されたページ (->オリジナル) /