Javascript 关于Apache文档根目录的混淆
在我为公司工作的一个应用程序中,我遇到了一个奇怪的行为,或者可能是我的误解,我希望我能得到一些澄清。 应用程序由Apache提供服务,根目录为:/company/client。例如,对于我访问的每个页面,它实际上都会指向服务器/company/client/index.phtml中的文件,依此类推。在应用程序的一个模块中,它包含一个Javascript 关于Apache文档根目录的混淆,javascript,php,apache,virtualhost,document-root,Javascript,Php,Apache,Virtualhost,Document Root,在我为公司工作的一个应用程序中,我遇到了一个奇怪的行为,或者可能是我的误解,我希望我能得到一些澄清。 应用程序由Apache提供服务,根目录为:/company/client。例如,对于我访问的每个页面,它实际上都会指向服务器/company/client/index.phtml中的文件,依此类推。在应用程序的一个模块中,它包含一个move\u upload\u filephp函数,目标目录是/images/example/,当页面运行时,应用程序试图转到绝对服务器根/images/exampl
move\u upload\u file
php函数,目标目录是/images/example/,当页面运行时,应用程序试图转到绝对服务器根/images/example/,而不是/company/client/images/example/
另外,由window.open打开的新窗口具有一个img标记,该标记具有src='/images/exmaple/',它指向服务器根,而不是/company/client/images/example/,这是预期的吗
我遗漏了什么,还是与Apache配置有关
其他信息:
应用程序作为conf文件中的虚拟主机,DocumentRoot“/company/client/”
执行window.open和php函数的页面用作/company/client/index.phtml中的Iframe
为我的错误感到抱歉。感谢everyone特别是Chris G的帮助,问题是代码错误地使用了GET变量,导致图像名称无法传递。我很困惑,因为有人在代码中犯了一个错误,移动了相对于根文件夹的图像,这是不正确的。这让我觉得PHP也像对待客户端一样对待path,这是一个错误。我猜我可以得出结论,web服务器文档根仅适用于客户端的所有内容,比如url、JS、HTML?使用
。phtml
扩展至少有点不规则。惯例是.php
,但公开此类信息通常是不好的形式。如果使用多视图,扩展可能会消失。“web根”定义从何处开始查找静态资产。/images/example.png
的URL实际上位于/company/client/images/example.png
中。在内部使用文件路径时,请记住这一点。PHP路径与文件系统相关,不知道或不关心文档根文件夹。像/test/blabla.phtml
这样的客户端URL肯定不会比文档根更高。你一定是弄错了。@tadman就我所知,OP绝对意识到了这一点,并特别询问了观察到的与该概念不符的行为。@tadman是的,正如chris提到的,我知道url的路径,chris你是对的,这是我的错误,我本来想说其他的话,但却被冲昏头脑了。客户应该完全不知道web根是什么。您也不希望通过错误消息之类的方式无意中泄漏此信息。基本上是这样的:脚本或图像src、样式表或链接href或表单操作,所有这些最终都是从服务器请求的完整URL。Apache将路径附加到文档根目录,然后发回文件或运行PHP脚本。但是,如果是后者,PHP脚本基本上是一个在服务器上运行的程序;它在硬盘上有一个位置,可以完全访问。