这似乎是一项简单而常见的任务,但我们无法让它发挥作用:
我们有两个人在一个项目上工作,我们的机器都设置为本地服务器,最终有一个生产环境。
在我们所有项目的负责人中,我们已经获得了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);
后者显然适用于我们当地的盒子,并且可能也适用于生产,但有没有办法使用相对路径更清洁?
答案 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
)