繁体   English   中英

PHP包括在所包含的路径之前的“根正斜杠”,如:“/ folder / file.php”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM