[英]PHP include when a “root forward slash” precedes the included path like: “/folder/file.php”
为了加载像css或javascript图像这样的文件,我学会了添加一些额外的安全性并在文件夹前面添加一个额外的/
,确保这些文件是从根路径向下开始从文件夹加载的:
例如/images/photo.jpg
例如/scripts/script.js eg
/ layout / css.css`
现在,当我在PHP中执行相同的技巧时,文件似乎无法加载,然后添加正斜杠!
<? include ("/folder/file.php"); ?> // include this file
然而,当我删除/
在路径的前面时,一切正常,但是Dreamweaver说它无法找到文件! 当我添加/
然后Dreamweaver时,CAN可以找到远程资产/文件,但在运行该站点时,文件并不包括在内。
PHP的面向文件的函数(包括,require,fopen,opendir等等)通常都希望处理文件系统路径。 也就是说,本地服务器上的路径,而不是通过Web服务器调解。
这并不是说你不能提供一个完整的绝对URL到函数,但一般来说,如果你没有看起来像url(protocol:// host / path?query#fragment)的东西,它会被解释为本地文件系统中的某些东西。
因此,当您在include路径前面/
时,它被视为绝对本地路径,从本地文件系统的顶部开始。
没有前导/
,它被视为相对路径,PHP将遍历其包含路径,尝试根据include_path + file_to_include
查找文件。
以/
开头的路径通常被解释为绝对路径(相对于环境)。 因此,Dreamweaver可能将根 (即/
)解释为项目的根路径,而unix服务器(以及在其上运行的php)将路径解释为目录系统中的根。 在HTTP上,它通常是指当前域的文档根目录。
最好的解决方案是简单地使用相对路径,即以路径开头的路径.
,像../../folder/file.php
。
如果你想包含一个我们认为是“本地URL路径”的文件,那么常见的习惯用法就是:
include("$_SERVER[DOCUMENT_ROOT]/folder/file.php");
(这是完全有效的PHP3风格语法。但现在"{$_SERVER['DOCUMENT_ROOT']}"
更常见。但没有区别。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.