[英]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_exists
和src
屬性使用單獨的路徑。
$img = 'myimg.jpg';
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/' . $img) {
echo '<img src=' . $img . ' />';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.