从php脚本和bash控制台发现扫描文件夹的结果不一致

时间:2016-01-25 23:26:11

标签: php bash

这是一个非常狭隘的问题(与“过于宽泛”的问题相反) 此脚本的输出

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

$filename = '/tmp/password';

$handle = fopen($filename, 'r');

if ($handle)
{
    $username = fgets($handle);
    $password = fgets($handle);

    echo 'user='.$username.'<br>';
    echo 'pass='.$password.'<br>';
}
else
{
    echo 'handle= is false<br>';
}

if (file_exists($filename))
{
    echo "filename $filename exists<br>";
}
else
{
    echo "filename $filename does not exists<br>";
}

$dir = '/tmp';
$files_of_tmp_dir = scandir($dir);

print_r($files_of_tmp_dir);

?>

导致显示以下内容

Warning: fopen(/tmp/password): failed to open stream: No such file or directory in /var/www/html/mydomain/read_credentials.php on line 8
handle= is false
filename /tmp/password does not exists
Array ( [0] => . [1] => .. [2] => httpd_lua_shm.23475 )

问题: 为什么只有一个用户文件'httpd_lua_shm.23475',howerver

此命令:

[root@newhostname tmp]# ls -l /tmp | wc -l

返回23。

ls -l /tmp

在这23个文件中不输出文件名'httpd_lua_shm.23475'。

这里有没有黑客,谁可以简单解释这种“过于宽泛”的行为? :)

好吧,只有悲惨的人没有读过这个问题,但谁只能投票。

UPD:

仔细阅读,问题(!)。 列为输出的单个文件不在/ tmp文件夹中,即使在root下也是如此。 root下的/ tmp文件夹中不存在“httpd_lua_shm.23475”。你在谈论权限。 stackoverflow中没有黑客?来吧! :)

UPD 2: 问题仅在/ tmp文件夹中说明。其他文件夹在工作方面也可以。要找出原因并张贴和回答。

1 个答案:

答案 0 :(得分:1)

运行php脚本的用户在tmp目录中具有与root不同的权限。