1

我有一系列网站都托管在具有不同域的同一服务器上。我想托管一些常见的 PHP 脚本,然后能够从其他域调用这些脚本。

我对我的 php 有点新鲜,所以请原谅代码尝试 - 我已经尝试过以下迭代,这可能会帮助您理解我的目标!

从php标签内...

include('http://www.mydomain/common_include.php?show_section=$section');

$show_section = $_GET['show_section'];
include('http://www.mydomain/common_include.php');//Then $show_section would be available to the included file/cod

最后,我尝试拉入包含一个函数的包含,然后尝试从父脚本运行该包含。

  • 我更愿意保持这个 PHP 为导向,而不是参与服务器(文件系统等(但我可以更改权限等)
  • 我可以但不希望仅将相同的库分别上传到每个域
  • 我了解 PHP 在服务器上运行,因此将脚本包含到另一台服务器上可能会出现问题。

提前致谢。

#

编辑好的好的 - 我知道这是不好的做法,所以不会这样做....非常感谢您的快速回答。但是,对于如何在所有站点上基本显示这个基本的 php 应用程序而不必将文件添加到每个站点的根目录,还有其他建议吗?只是为了防止大量脚本重复......(大声思考从数据库或任何其他解决方案中调用脚本)再次感谢您的帮助

4

5 回答 5

3

如果您可以将远程 PHP 文件包含到您自己的项目中,那将是一个巨大的安全风险。PHP 在服务器将其发送给您之前被解析,因此跨域包含将仅包含脚本生成的输出。包含 PHP 文件以便执行它们的唯一方法是通过本地文件系统。

如果你查看 PHP.net 的关于 include 的文档,你会发现:

如果在 PHP 中启用了“URL fopen 包装器”(它们在默认配置中),您可以使用 URL 指定要包含的文件(通过 HTTP 或其他支持的包装器 - 请参阅支持的协议/包装器列表以获取协议)而不是本地路径名。如果目标服务器将目标文件解释为 PHP 代码,则可以使用与 HTTP GET 一起使用的 URL 请求字符串将变量传递给包含的文件。严格来说,这与包含文件并使其继承父文件的变量范围不同。该脚本实际上正在远程服务器上运行,然后将结果包含到本地脚本中。

这几乎解释了整个事情。

于 2010-06-23T11:58:07.357 回答
1

最初问题的根源似乎是发帖者担心在多个站点上使用 PHP 脚本或插件,然后每次需要更新时都会执行繁重的任务。虽然尝试跨站点包含 PHP 文件是一个坏主意,但最好的计划是构建尽可能自包含的脚本。将整个插件保存在一个目录中......并确保使用它的函数调用格式尽可能 - 干净、命名良好的函数、统一的命名约定以及每个函数需要哪些参数的深思熟虑的计划。避免使用全局变量。

理想情况下,每次需要在所有位置更新插件/脚本时,您都应该很轻松。您甚至可以设置一个自动化过程,将包含插件的新目录上传到每个站点以替换旧目录。并且代码中的函数调用应该很少改变。

如果您的脚本足够大,您可能会实现一个自动更新过程,例如使用最新版本的 Wordpress。单击一个按钮,它会自行更新。过去,更新十几个运行 Wordpress 的网站(例如)是一件非常痛苦的事情。

于 2013-02-24T15:22:38.040 回答
0

这是非常糟糕的做法。
实际上,您不包括 PHP,而只是 HTML 代码。

包括文件,而不是网址。同一台服务器是可能的。
只需使用这些文件的绝对路径。

于 2010-06-23T11:58:13.557 回答
0

除了这是一种不好的做法之外,如果您真的想这样做,您应该首先检查 include 是否允许URL 。

但是,如果所有站点都需要使用该脚本,则可以将脚本放在执行 php 的用户可访问的目录中的某个位置,并将该目录添加到 php.ini include_path属性(也可以在运行时完成

(或者您可以创建一个 php 扩展并将其加载为扩展)

于 2010-06-23T12:05:46.003 回答
0

如果您在该服务器上具有 root 权限,则可以只使用来自文件系统根目录的绝对路径,但大多数主机不会让您这样做。

于 2013-12-07T17:25:06.387 回答