鍍金池/ 問(wèn)答/PHP/ PHP include_once 文件變更所屬用戶(hù)時(shí)產(chǎn)生的bug

PHP include_once 文件變更所屬用戶(hù)時(shí)產(chǎn)生的bug

<?php
//test.php
@unlink('/tmp/abc.php');
var_dump(@include_once('/tmp/abc.php'));
swritefile('/tmp/abc.php','<?php echo 123;');
var_dump(file_exists('/tmp/abc.php'));
var_dump(include_once('/tmp/abc.php'));

function swritefile($filename, $writetext, $openmod='w')
{
    if (@$fp = fopen($filename, $openmod)) {

        flock($fp, 2);

        fwrite($fp, $writetext);

        fclose($fp);

        return true;

    }
}

針對(duì)以上代碼,分三次運(yùn)行:

  • 訪問(wèn)test.php,輸出如下
bool(false) bool(true) 123int(1)
  • 更改生成文件所屬用戶(hù)chown vaxili:vaxili /tmp/abc.php.,然后訪問(wèn)test.php輸出如下
123int(1) bool(true) bool(true)
  • 刪除生成的文件rm /tmp/abc.php ,訪問(wèn)test.php,輸出如下:
bool(false) bool(true) bool(true)

注意到第三次訪問(wèn)時(shí),并沒(méi)有 123 輸出,但是查看文件是否存在返回的是True

這是什么原因呢?

回答
編輯回答
情殺

類(lèi)似這個(gè)問(wèn)題

最后決定不用include_once了 換成include

2018年2月24日 10:40