我想知道包含文件时的一些事情:
说我想要包含一个文件或链接到它。我应该只是例如:
include("../localfile.php");
或者我应该使用
include("http://sameserver.com/but/adirect/linkto/localfile.php");
一个比另一个好吗?还是更安全?或者只是个人偏好?
显然,如果您有一个文件包含在多个目录中的文件中,并且该文件包含不同的文件,或者还有其他方法可以做到这一点,那么这是必要的吗?
答案 0 :(得分:5)
读取文件很多比发出HTTP请求并获得响应更快。如果你能提供帮助,永远不会include(a_uri)
。
如果要计算包含的完整文件路径,请使用$_SERVER['DOCUMENT_ROOT']
。
答案 1 :(得分:1)
肯定包含本地文件,因为php脚本并不真正知道或关心您在本地服务器上包含脚本,因此url路径会导致http请求,并且来自http请求的网络延迟非常多一般来说,渲染任何html页面的瓶颈,你拥有的越多,你就会越好。
就我个人而言,我尽量避免使用include
和require
来支持require_once
,因为使用require_once
意味着您可以重复使用代码而不是编写包含它时立即执行的代码。引入类定义,引入函数库,但尽量避免在包含它时立即执行的代码,因为这会使重用更加困难。
答案 2 :(得分:1)
如前所述,肯定包含一个本地文件,而不是一个HTTP请求(如果他知道在哪里寻找它,则需要更多时间,不缓存并且内容在技术上可以被全世界查看)。 /> 还有一个小细节,如果你使用包含文件的完整路径,它甚至会比相对路径更快,特别是如果你使用某种字节代码缓存。
答案 3 :(得分:1)
如果你的问题是关于如何保留它,那么当你从升级转到生产时你不必改变十亿条路径,那就去看看我学到的这个小小的问题:
define('BASE_DIR', '/path/to/root/');
然后在所有路径引用中使用BASE_DIR
。在移动您的网站时,只需将该定义更改为新路径(此时该路径应为/
)。
答案 4 :(得分:1)
除了其他人说的,这些调用会有不同的结果,因为删除调用将执行php output ,而不是文件内容。除非你阻止php处理文件,否则你将代码暴露给世界,这也不一定是你真正想要的。
答案 5 :(得分:0)
始终包含在本地,因为如果您包含远程,则某人可以创建不同的文件并执行令人讨厌的事情。另一个问题是你无法用远程测试这个包括。据我所知,你应该使用require_once ......