[英]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.