我有一系列网站都托管在具有不同域的同一台服务器上。我想托管一些常见的PHP scrips,然后能够从其他域调用这些。
我对我的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
最后,我尝试了包含一个函数的include,然后尝试从父脚本运行包含。
提前致谢。
#EDIT 好的 - 我认为这是不好的做法,所以不会这样做....非常感谢快速的答案。 但是有没有其他建议如何在所有网站上显示这个基本的PHP应用程序,而不必将文件添加到每个网站的根目录?只是为了防止大规模的脚本重复......(大声思考从数据库或任何其他解决方案调用脚本) 再次感谢您的帮助
答案 0 :(得分:3)
如果您可以将远程PHP文件包含到您自己的项目中,那将是一个巨大的安全风险。在服务器将PHP发送给您之前,PHP会被解析,因此跨域包含只包含脚本生成的输出。包含PHP文件以便可以执行它们的唯一方法是通过本地文件系统。
如果你看看PHP.net关于include的文档,你可以找到:
如果在PHP中启用了“URL fopen wrappers”(它们是默认配置),您可以使用URL指定要包含的文件(通过HTTP或其他支持的包装器 - 请参阅支持的协议/包装列表协议列表而不是本地路径名。如果目标服务器将目标文件解释为PHP代码,则可以使用与HTTP GET一起使用的URL请求字符串将变量传递给包含的文件。严格来说,这与包含文件并使其继承父文件的变量范围完全相同;该脚本实际上正在远程服务器上运行,然后结果将包含在本地脚本中。
这几乎解释了整个事情。
答案 1 :(得分:1)
原始问题的根源似乎是海报关注在多个站点上使用PHP脚本或插件,然后每次需要更新时都要执行繁重的任务。虽然尝试跨站点包含PHP文件是一个坏主意,但是将脚本结构化为尽可能自包含是一个更好的计划。保持整个插件包含在一个目录中....并确保您的函数调用尽可能好地形成 - 干净,命名良好的函数,统一的命名约定以及每个函数需要的参数的深思熟虑的计划。避免使用全局变量。
理想情况下,每次需要更新所有位置的插件/脚本时,您都应该有一个非常简单的时间。您甚至可以设置一个自动化过程,将包含插件的新目录上传到每个站点,替换旧站点。并且代码中的函数调用应该很少发生变化。
如果您的脚本足够大,您可能会实施自动更新过程,就像更新版本的Wordpress一样。单击一个按钮,它会自动更新。在过去,更新十几个运行Wordpress的网站(例如)是一个巨大的痛苦。
答案 2 :(得分:0)
这是非常糟糕的做法 实际上你不包括PHP而只包括HTML代码。
包含文件,而不是网址。可以使用同一台服务器 只需对这些文件使用绝对路径即可。
答案 3 :(得分:0)
除了这是一个不好的做法,你应该先检查一下是否允许URLs,如果你真的想这样做。
但是,如果所有需要使用该脚本的站点,您可以将脚本放在执行php的用户可访问的目录中,并将该dir添加到php.ini include_path属性({{3 }})
(或者您可以创建一个php扩展并将其加载为扩展名)
答案 4 :(得分:0)
如果你在该服务器上拥有root权限,你可以使用来自filesystem root的绝对路径,但是大多数托管都不允许你这样做。