Php文件函数问题:URL或路径


Php File function doubts: URL or Path

使用file函数,使用URL和路径有什么区别?

$my_array = file("http://www.mydomain.com/my_script.php?id=1");
$my_array = file($_SERVER['DOCUMENT_ROOT']."my_script.php?id=1");

我使用的是第一个,但我猜,它依赖于我的服务器互联网连接,因为,有时,尽管脚本被称为(我知道,因为my_script.php插入一行在数据库中)我没有得到响应和$my_array是空的。

我说的对吗?

如果是,使用第二个调用将总是用响应填充$my_array。不会吗?

我可以从传递参数的路径中调用文件,就像我使用URL一样吗?

编辑:非常感谢你的回答,如果这个问题太愚蠢,我很抱歉。我在写别人的代码。他这样做是因为my_script.php也从其他服务器调用。我将尝试使用require首先准备$_GET变量(有点棘手,但我不想触及my_script.php)。

任何以http://...开头的路径都会发出实际的HTTP请求。本质上,它会像你在浏览器中输入URL一样。如果您在自己的服务器上为脚本执行此操作,则完全没有意义,因为:

  • 它需要"出去"并建立一个TCP连接,到它自己
  • 它绑定了另一个web服务器进程
  • 它启动另一个单独的PHP进程
  • 它不保留当前PHP进程的上下文
  • 它可能根本不能返回任何东西,因为它只会返回其他脚本echo输出的内容

这只有在你试图与其他远程服务器通信时才有意义。

另一方面,在本地非http://...文件上使用?id=1是不可能的,因为?id=1不是文件名的有效部分(或者至少它可能不像你想象的那样做)。

你通常想要的是:

require __DIR__ . '/foo.php';

这包括当前脚本中的其他PHP脚本作为PHP代码。你应该定义函数和类,使用自动加载来加载它们,并在需要时调用它们,但这是一个相当广泛的主题,我不会在这里深入讨论。

所有file()所做的就是读取文件。它旨在从磁盘加载某些内容,但支持PHP提供的任何fopen包装器,例如HTTP。

当你传递一个URL给file()时,它会从你的web服务器获取该URL。您的web服务器将执行您的PHP并返回结果,这就是您从file()返回的结果。不,两者完全不同,主要是因为其中一个涉及web服务器和PHP,而另一个没有。

不要这样做。使用require()require_once()代替。