簡體   English   中英

使用網絡域或系統路徑URL訪問PHP中的文件

[英]Using a web domain or system path URL to access a file in PHP

我的計算機上有一個localhost Apache / PHP配置。 我希望能夠

1)使用絕對路徑檢查圖像文件是否存在,並

2)使用相同的網址顯示它

我想做的一個簡單例子:

if(file_exists($url)) {
    echo '<img src="' . $url . '" />';
}

如果我設置...

$url = 'http://' . $_SERVER['HTTP_HOST'] . '/myimg.jpg';

那么file_exists將返回false,因為URL是Web路徑(http://localhost/myimg.jpg)。


如果我設置...

$url = $_SERVER['DOCUMENT_ROOT'] . '/myimg.jpg';

它將識別出該文件存在(C:/htdocs/myimg.jpg),但由於無法訪問圖像源而無法顯示該圖像。 如果查看源並將URL復制/粘貼到Web瀏覽器的地址欄中,則顯示的圖像很好。


也許我在Apache的httpd.conf文件或PHP.ini中丟失了某些內容? 也許是某種別名的聲明。 另外,該網站完成后還將被上傳到遠程Web服務器(例如bluehost.com),因此我需要一個通用的解決方案。

PHP.ini中的allow_url_fopen已打開,並且每次在httpd.conf或PHP.ini中進行更改時,我都會重新啟動服務器。 我已經為此奮斗了好幾天,所以即使朝着正確的方向邁出了一步,也將不勝感激:)

謝謝。

您將服務器端文件訪問與客戶端混淆。

$url = 'http://' . $_SERVER['HTTP_HOST'] . '/myimg.jpg';

這將產生一個URI,供客戶端用來通過HTTP獲取您的圖片。 例如http://example.com/myimg.jpg


$url = $_SERVER['DOCUMENT_ROOT'] . '/myimg.jpg';

這將產生一個供PHP使用的文件系統路徑。 例如/var/www/htdocs/myimg.jpg


您的解決方案需要同時使用

$img = '/myimg.jpg';

if(file_exists($_SERVER['DOCUMENT_ROOT'] . $img)) {
    echo '<img src="', $_SERVER['HTTP_HOST'], $img, '" />';
}

編輯:您可能可以將echo線替換為

echo '<img src="', $img, '" />';

因為絕對URL(一個以正斜杠開頭的URL)始終從文檔根目錄開始

<?php
$url = "/myimg.jpg";
if( file_exists($_SERVER['DOCUMENT_ROOT'].$url))
    echo "<img src='".$url."' />";
?>

這將為您提供HTML:

<img src='/myimg.jpg' />

這是圖片,因為它是根據域名解析的。

file_exists采用的絕對路徑與您的Web路徑完全不同。 您只需要為img標簽中的file_existssrc屬性使用單獨的路徑。

$img = 'myimg.jpg';
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/' . $img) {
    echo '<img src=' . $img . ' />';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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