2012-08-30 138 views
3

我有一個非常奇怪的錯誤。 PHP無法讀取存在的文件...有些想法?我沒有安裝SELinux。我使用的是fedora 17和php 5.4。PHP無法讀取/ var/tmp文件

我已經嘗試瞭解我所知道的一切,但問題仍然存在。

[[email protected] var]# ls -lia 
total 92 
    8194 drwxrwxrwx. 23 root root 4096 ago 17 10:30 . 
    2 dr-xr-xr-x. 19 root root 4096 ago 13 16:00 .. 
32139 drwxr-xr-x. 2 root root 4096 may 22 13:42 account 
    288 drwxr-xr-x. 2 root root 4096 feb 3 2012 adm 
    13 drwxr-xr-x. 14 root root 4096 ago 8 10:26 cache 
796005 drwxr-xr-x 2 root root 4096 feb 6 2012 cvs 
    289 drwxr-xr-x. 3 root root 4096 ago 21 18:07 db 
    290 drwxr-xr-x. 3 root root 4096 may 22 13:42 empty 
263682 drwxr-xr-x. 3 root root 4096 ago 7 11:15 ftp 
    291 drwxr-xr-x. 2 root root 4096 feb 3 2012 games 
35931 drwxrwx--T. 2 root gdm 4096 jun 8 16:05 gdm 
    292 drwxr-xr-x. 2 root root 4096 feb 3 2012 gopher 
    15 drwxr-xr-x. 45 root root 4096 ago 10 10:42 lib 
    296 drwxr-xr-x. 2 root root 4096 feb 3 2012 local 
    308 lrwxrwxrwx. 1 root root  11 may 22 13:39 lock -> ../run/lock 
    12 drwxr-xr-x. 14 root root 4096 ago 26 03:17 log 
    297 lrwxrwxrwx. 1 root root  10 may 22 13:39 mail -> spool/mail 
    298 drwxr-xr-x. 2 root root 4096 feb 3 2012 nis 
931987 drwxrwxrwx 3 nobody nobody 4096 ago 17 10:32 nodejs 
    299 drwxr-xr-x. 2 root root 4096 feb 3 2012 opt 
    300 drwxr-xr-x. 2 root root 4096 feb 3 2012 preserve 
    307 lrwxrwxrwx. 1 root root  6 may 22 13:39 run -> ../run 
    301 drwxr-xr-x. 15 root root 4096 may 22 13:43 spool 
    305 drwxrwxrwx. 5 nobody nobody 4096 ago 30 14:13 tmp 
262637 drwxr-xr-x. 7 root root 4096 ago 7 11:20 www 
    306 drwxr-xr-x. 2 root root 4096 feb 3 2012 yp 


[[email protected] var]# ls -lia tmp/ 
total 216 
    305 drwxrwxrwx. 5 nobody nobody 4096 ago 30 14:13 . 
    8194 drwxrwxrwx. 23 root root  4096 ago 17 10:30 .. 
    3030 -rwxrwxrwx 1 nobody nobody 199397 ago 30 14:13 file_thumb_5363_1_0.jpg 

<?php 
highlight_file(__FILE__); 

var_dump(file_exists('/var/tmp/file_thumb_5363_1_0.jpg')); 

打印出來:

bool(false) 
+1

你得到它,當你在命令行運行PHP或從瀏覽器(作爲不同的用戶?) 當你從shell執行它時,顯示'file/var/tmp/file_thumb_5363_1_0.jpg'命令是什麼? – Grzegorz

+0

@grzegorz他以root用戶身份登錄,文件perm是777。不能是一個許可的事情 – RobertMaysJr

+0

@RobertMays​​Jr:我知道他以root身份登錄 - 提示sais。另外777來自-rwrxrwxrwx,圖片顯示了這一點。我想知道他是否可以執行'file',並且在從命令行運行php(然後它不能是權限)或從web運行php時(這可能是權限問題),他會在哪裏得到這個問題。 – Grzegorz

回答

8

的Fedora 16出臺了 「私人TMP」 的/tmp/var/tmp我在把我的2美分概念那個方向。

From the manual

2.3.3。服務私有/ tmp
由systemd管理的一些服務已被修改,以利用其爲私人/ tmp目錄提供 目錄的能力。先前已發現使用/ tmp和/ var/tmp 的特權服務可能會受到非特權用戶的干擾,從而可能導致特權升級。使用 服務的私有/ tmp目錄可防止此類攻擊。

該指令添加到systemd單元文件的修改 服務是:

[服務]
PrivateTmp =真