簡體   English   中英

PHP和文件路徑中的file_exists()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM