PHP8 使用遠(yuǎn)程文件

2023-08-24 14:59 更新

只要在 php.ini 中啟用 allow_url_fopen,就可以將 HTTP 和 FTP URL 與大多數(shù)以文件名作為參數(shù)的函數(shù)一起使用。此外,也可以在 include、include_once、require 及 require_once 語(yǔ)句中使用 URL(必須啟用 allow_url_include)。PHP 協(xié)議支持的更多信息參見(jiàn)支持的協(xié)議和封裝協(xié)議。

例如,可以用此打開(kāi)遠(yuǎn)程 web 服務(wù)器上的文件,解析輸出以獲取所需數(shù)據(jù),然后在數(shù)據(jù)庫(kù)查詢中使用該數(shù)據(jù),或者網(wǎng)站其余部分相同的樣式輸出內(nèi)容。

示例 #1 獲取遠(yuǎn)程頁(yè)面的標(biāo)題

<?php
$file = fopen ("http://www.example.com/", "r");
if (!$file) {
echo "<p>Unable to open remote file.\n";
exit;
}
while (!feof ($file)) {
$line = fgets ($file, 1024);
/* 僅當(dāng)標(biāo)題跟標(biāo)簽在同一行時(shí)才有效 */
if (preg_match ("@\<title\>(.*)\</title\>@i", $line, $out)) {
$title = $out[1];
break;
}
}
fclose($file);
?>

也可以在 FTP 服務(wù)器上寫(xiě)入文件(提供具有正確訪問(wèn)權(quán)限的用戶身份連接)。只能使用此方法創(chuàng)建新文件;如果嘗試覆蓋已存在的文件,則調(diào)用 fopen() 將失敗。

要以“anonymous”以外的用戶名連接服務(wù)器,需要指明用戶名(可能還有密碼),例如“ftp://user:password@ftp.example.com/path/to/file”(當(dāng)需要基礎(chǔ)認(rèn)證的 HTTP 協(xié)議訪問(wèn)遠(yuǎn)程文件時(shí)也可以使用相同的語(yǔ)法)。

示例 #2 將數(shù)據(jù)保存到遠(yuǎn)程服務(wù)器

<?php
$file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w");
if (!$file) {
echo "<p>Unable to open remote file for writing.\n";
exit;
}
/* 這里寫(xiě)入數(shù)據(jù)。 */
fwrite ($file, $_SERVER['HTTP_USER_AGENT'] . "\n");
fclose ($file);
?>
注意:或許可以從以上范例中了解到可以使用該技術(shù)寫(xiě)入遠(yuǎn)程日志文件。但不幸的是,這不起作用,因?yàn)槿绻绻h(yuǎn)程文件已存在,調(diào)用 fopen() 將失敗。要進(jìn)行這樣的分布式日志記錄,應(yīng)該參考 syslog()。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)