file_get_contents的相对PHP路径

时间:2011-08-10 17:46:23

标签: php

这似乎是一项简单而常见的任务,但我们无法让它发挥作用:

我们有两个人在一个项目上工作,我们的机器都设置为本地服务器,最终有一个生产环境。

在我们所有项目的负责人中,我们已经获得了PHP,如下所示:

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

让它运行的唯一方法是将其设置为完整的网址,例如http://dev01.domain.com/lib/php/backend/gateway.php?action=history,或者将其设置为localhost,如下所示:

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

后者显然适用于我们当地的盒子,并且可能也适用于生产,但有没有办法使用相对路径更清洁?

2 个答案:

答案 0 :(得分:10)

$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代码,而不是执行它的结果。

当您要求http://localhost/....时,您要求PHP打开 URL ,向执行代码的Web服务器发出HTTP请求并返回该代码的输出。

非常不同。

实际上,为什么不将gateway.php中的代码合并到当前文件中?没有理由在您自己的服务器上发出HTTP请求来执行代码。

答案 1 :(得分:2)

/lib/php/backend/gateway.php?action=history转换为函数/类方法

例如

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

此外,不需要产生另一个HTTP进程
(在这种情况下为file_get_contents