lstat
(PHP 4, PHP 5, PHP 7, PHP 8)
lstat — ファイルあるいはシンボリックリンクの情報を取得する
パラメータ
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() ファミリーをサポートしているかを調べるには
サポートするプロトコル/ラッパー を参照してください。
+add a note
User Contributed Notes 2 notes
HP@SG ¶
4 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)
}
"
;?>
salsi at icosaedro dot it ¶
8 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.