簡體   English   中英

file_get_contents 的相對 PHP 路徑

[英]Relative PHP Paths for file_get_contents

這似乎是一項簡單而常見的任務,但我們無法讓它發揮作用:

我們有兩個人在一個項目上工作,並且都將我們的機器設置為本地服務器,最終具有生產環境。

在我們所有項目的頭部,我們有 PHP 如下所示:

$feed = "/lib/php/backend/gateway.php?action=history";
$json = file_get_contents($feed, true);

讓它工作的唯一方法是將其設置為完整的 URL 就像http://dev01.domain.com/lib/php/backend/gateway.ZE1BFD762321E409CEE4AC0B6E8419這樣設置它:

$feed = "http://localhost/lib/php/backend/gateway.php?action=history";
$json = file_get_contents($feed, true);

后者顯然適用於我們的本地盒子,並且可能也適用於生產環境,但是有沒有辦法使用相對路徑來更清潔一點?

$feed = 'http://' . $_SERVER['HTTP_HOST'] . '/lib/php/backend/gateway.php?action=history';

當你嘗試這個 -

$feed = "/lib/php/backend/gateway.php?action=history";
$json = file_get_contents($feed, true);

意識到您是在要求 PHP 在您的計算機上打開該路徑的文件 文件沒有查詢字符串,結果將是該文件中的 PHP 代碼,而不是執行它的結果。

When you ask for http://localhost/.... , you're asking PHP to open a URL , making an HTTP request to a web server which executes the code and returns the output of that code.

非常不一樣。

但實際上,為什么不將 gateway.php 中的代碼合並到當前文件中呢? 沒有理由發出 HTTP 請求來在您自己的服務器上執行代碼。

/lib/php/backend/gateway.php?action=history轉換為函數/類方法

例如。

function gateway($action)
{
  // existing code
}
$json = gateway('history');

此外,無需生成另一個 HTTP 進程
(在這種情況下是file_get_contents

暫無
暫無

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

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