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() - ファイルに関する情報を取得する

add a note

User Contributed Notes 2 notes

up
-1
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 GroupZend 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 20202100+0 records in2100+0 records out2202009600 bytes (2.2 GB, 2.1 GiB) copied, 4.79192 s, 460 MB/sWed 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
9 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 1Window not tested. PHP 64-bits not tested.
To Top