2015-10-15 139 views
4

我已經看到了幾個類似的問題,但沒有答案在我的情況下工作,除了它可能與權限有關。PHP file_exists返回false,但該文件確實存在

Apache提供的PHP腳本告訴我unable to open database file

當我打印該文件的路徑時,它返回一個有效的路徑,比如DBPATH。該文件確實存在於該位置;我給它和它的父文件夾777權利;我給他們user:user訪問,其中user是所有腳本文件所屬的sudoer。爲了以防萬一,我對整個htdocs/文件夾也做了同樣的處理。

當我打印file_exists(DBPATH)時,它返回false。是最有可能的權限問題,但我不知道我應該改變什麼PHP有訪問權限。我也試過apache:apache。我不能su apache(用戶不可用)。

我的腳本在htdocs/DBFILE是在某個地方(我試過/tmp/test,都在777,但沒有運氣)。

沒有safe_mode,新安裝的PHP 5.4,CentOS7。

請有人給我一個線索,至少幫助調試它。 也許是這樣的:如何檢查我的文件是否可以從apache/my php腳本中讀取,而無需運行腳本本身?我怎樣才能得到用來執行它的用戶名?

+0

你能通過'cat DBPATH'打開文件嗎? –

+1

'file_exists'不說謊,某處不對。我猜你的'DBPATH'不正確。 請注意,如果您將文件包含在某處,則當前目錄是包含所有內容的根文檔的目錄。 – x13

+0

您是否嘗試使用文件的絕對路徑? –

回答

2

解決,或多或少。

調試我有想將DBFILE移動到PHP腳本所在的同一文件夾,並檢查它可以找到它 - 它做到了。然後我將DBFILE文件夾中的一個接一個地移動到樹狀結構中,以查看它停止找到它的位置。

如果整個路徑中只有一個文件夾對所有用戶(xx5)沒有執行權限,則會發生該文件無法找到,並且file_exists返回false

因此,解決方案是在完全可執行的位置創建另一個文件夾(/var/www/data/chmod 755 data之後工作),然後將文件移動到那裏。

相關問題