一、前言 在上一篇隨筆中,我向大家介紹瞭如何製作自己的 nuget 包,並沒有向大家介紹如何發佈製作好的包,今天就繼續向大家介紹如何搭建一個簡易的 nuget 私有倉庫,並上傳自己的包以供內部使用。 老規矩,今天介紹的還是在Windows系統下進行的操作,Linux系統下也可以使用 nexus 來搭 ...
PHP file_exists()函數用於檢查伺服器上是否存在一個文件或目錄。但是,如果要檢查遠程伺服器上的文件是否存在,file_exists()函數將不可用。
本文將介紹php中如何判斷遠程文件是否存在的幾種方法。文章將演示並描述檢查遠程文件是否存在的各種方法。
- PHP curl() 方法
- PHP fopen() 方法
- PHP get_headers() 方法
- PHP file_get_contents() 方法
使用 PHP curl() 判斷遠程文件是否存在
CURL是一個非常強大的開源庫,支持很多協議,包括HTTP、FTP、TELNET等,我們使用它來發送HTTP請求。它給我 們帶來的好處是可以通過靈活的選項設置不同的HTTP協議參數,並且支持HTTPS。CURL可以根據URL首碼是“HTTP” 還是“HTTPS”自動選擇是否加密發送內容。
PHP建立CURL請求的基本步驟
- 初始化:curl_init()
- 設置屬性:curl_setopt().有一長串cURL參數可供設置,它們能指定URL請求的各個細節。
- 執行並獲取結果:curl_exec()
- 釋放句柄:curl_close()
您可以使用cURL來檢查遠程伺服器上文件是否存在。下麵的代碼片段展示瞭如何在PHP中使用cURL檢查遠程文件是否存在。
<?php
function checkRemoteFile($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(curl_exec($ch)!==FALSE)
{
return true;
}
else
{
return false;
}
}
$url = 'http://www.manongzj.com/favicon.ico';
$check = checkRemoteFile($url);
if(true == $check){
echo "ok";
}else{
echo "not ok";
}
?>
使用 PHP fopen() 判斷遠程文件是否存在
fopen() 函數用於打開一個文件或 URL 地址。如果打開失敗,本函數返回 FALSE 。
語法:
resource fopen( string filename, string mode )
參數 filename 為嘗試打開/創建的文件名,參數 mode 指定了打開模式,其可能的值如下:
打開模式 | 說明 |
---|---|
r | 只讀,並將文件指針指向文件開始位置 |
r+ | 讀寫,將文件指針指向文件開始位置 |
w | 只寫,將文件指針指向文件開始位置並將文件內容清空,如果文件不存在則嘗試創建之 |
w+ | 讀寫,將文件指針指向文件開始位置並將文件內容清空,如果文件不存在則嘗試創建之 |
a | 追加,將文件指針指向文件末尾來操作,如果文件不存在則嘗試創建之 |
a+ | 讀寫追加,將文件指針指向文件末尾來操作,如果文件不存在則嘗試創建之 |
x | 只寫,並創建文件,如果文件已存在,則 fopen() 調用失敗並返回 FALSE |
x+ | 讀寫,並創建文件,如果文件已存在,則 fopen() 調用失敗並返回 FALSE |
下麵的代碼片段展示瞭如何使用PHP中的fopen()函數檢查遠程文件是否存在。
<?php
// Remote file url
$remoteFile = 'http://www.manongzj.com/favicon.ico';
// Open file
$handle = @fopen($remoteFile, 'r');
// Check if file exists
if(!$handle){
echo 'File not found';
}else{
echo 'File exists';
}
?>
使用PHP get_headers()判斷遠程文件是否存在
get_headers() 是PHP系統級函數,他返回一個包含有伺服器響應一個 HTTP 請求所發送的標頭的數組。如果失敗則返回 FALSE 併發出一條 E_WARNING 級別的錯誤信息(可用來判斷遠程文件是否存在)。
函數定義
array get_headers ( string $url [, int $format = 0 ] )
參數
format 如果將可選的 format 參數設為 1,則 get_headers() 會解析相應的信息並設定數組的鍵名,如果設置預設為0
下麵的代碼片段展示瞭如何使用PHP中的get_headers()函數檢查遠程文件是否存在。
<?php
function remote_file_exists($url){
return(bool)preg_match('~HTTP/1\.\d\s+200\s+OK~', @current(get_headers($url)));
}
$ff = "http://www.manongzj.com/favicon.ico";
if(remote_file_exists($ff)){
echo "file exist!";
}
else{
echo "file not exist!!!";
}
?>
使用PHP file_get_contents()判斷遠程文件是否存在
file_get_contents() 函數把整個文件讀入一個字元串中。
和 file() 一樣,不同的是 file_get_contents() 把文件讀入一個字元串。
file_get_contents() 函數是用於將文件的內容讀入到一個字元串中的首選方法。如果操作系統支持,還會使用記憶體映射技術來增強性能。
語法
file_get_contents(path,include_path,context,start,max_length)
參數
參數 | 描述 |
---|---|
path | 必需。規定要讀取的文件。 |
include_path | 可選。如果也想在 include_path 中搜尋文件的話,可以將該參數設為 "1"。 |
context |
可選。規定文件句柄的環境。 context 是一套可以修改流的行為的選項。若使用 null,則忽略。 |
start | 可選。規定在文件中開始讀取的位置。該參數是 PHP 5.1 新加的。 |
max_length | 可選。規定讀取的位元組數。該參數是 PHP 5.1 新加的。 |
下麵的代碼片段展示瞭如何使用PHP中的file_get_contents()函數檢查遠程文件是否存在。
<?php
$url = 'http://www.manongzj.com';
$code = FALSE;
$options['http'] = array(
'method' => "HEAD",
'ignore_errors' => 1
);
$body = file_get_contents($url, NULL, stream_context_create($options));
foreach($http_response_header as $header)
sscanf($header, 'HTTP/%*d.%*d %d', $code);
echo "Status code: $code";
?>
如果你不想遵循重定向,你可以這樣做:
<?php
$url = 'http://www.manongzj.com';
$code = FALSE;
$options['http'] = array(
'method' => "HEAD",
'ignore_errors' => 1,
'max_redirects' => 0
);
$body = file_get_contents($url, NULL, stream_context_create($options));
sscanf($http_response_header[0], 'HTTP/%*d.%*d %d', $code);
echo "Status code: $code";
?>
以上就是本文的全部內容,希望對大家的學習有所幫助。更多教程請訪問碼農之家