[英]file_exists() in PHP and file path
我在根文件夾中uploads
了一個文件夾。 根目錄中還有另一個文件夾A
,它包含一個PHP文件。 我在PHP文件中有以下代碼:
$imgpath = '/uploads/' . $filename;
echo '<img src="' . $imgpath . '" />';
echo (file_exists($imgpath))?'true':'false';
它將顯示圖像,因此文件存在,但file_exists
顯示為false
。
如果我將'/uploads/'
更改為'../uploads/'
,它將顯示圖像, file_exists
顯示為true
。 即使沒有圖像, file_exists
總是顯示為true
。
問題是什么?
*更新*
我試過echo dirname(__FILE__);
。 它顯示/....../A
,在uploads
文件夾位於/....../uploads
。 此外,我在文件夾/....../m/A
有另一個類似的PHP文件。 所以我需要某種普遍的道路。 如何獲得根路徑,即/....../
?
我也試過了$_SERVER['DOCUMENT_ROOT']
,但是圖片無法顯示,盡管路徑是100%正確的。
為避免出現問題,最簡單的方法是使用file_exists()的絕對路徑。 系統root /
與您的Web根目錄(例如) /var/www
嘗試
# /var/www/A/script.php
$imgpath = '/uploads/' . $filename;
# check in /var/www/uploads/filename
if( file_exists(dirname(__FILE__) . '/..' . $imgpath) ) {
echo '<img src="' . $imgpath . '" />';
}
編輯PHP> = 5.3
$path = "/uploads/${filename}";
if (file_exists(sprinf("%s/..%s", __DIR__, $path)) {
echo "<img src=\"{$path}\">;
}
以“/”開頭表示Web上的相對路徑,但是在根目錄“/”目錄中引用文件夾“uploads”的文件系統上。
嘗試./uploads
表示法或使用dirname(__FILE__)
。
原因是HTML中的絕對路徑與您的網站根目錄相關,但在PHP中它與文件系統根目錄相關。 她們不一樣。
我的網站根目錄是http://www.example.com/但我的網站是在/var/www/
文件系統上開發的,如果我在/var/www/index.php
並使用了路徑/uploads/
,在http://www.tmlample.com/uploads/的 html中,但對於/uploads/
的文件系統。 我甚至不在我的網站目錄中了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.