在哪里设置PHP $ _SERVER 尾部的斜线?

有时$_SERVER['DOCUMENT_ROOT']以斜线结尾返回。 在其他环境中,它不。 哪里可以指定?

如何在Java 1.6中获得Apache XML-RPC 3.1.3合规性(ISOdate格式和时区)

如何打印使用Apache Poi和Java制作的工作簿文件

为什么谷歌索引链接连字符和%20的友好URL?

由于mod_proxy文件未加载,httpd未启动

我的Apache如何才能访问根文件

你不能预先说$_SERVER['DOCUMENT_ROOT']包含最后一个斜杠。

通常情况下,如果配置正确,它不包含结尾的斜杠。 在Ubuntu上(以及在其他UNIX上),正确写入目录的路径在末尾没有/ 。 在Windows上,例如,如果Apache配置一个,它甚至会拒绝启动。 在UNIX上,Apache不是那么挑剔,并且允许使用尾随斜线。

但是有一个例外,如果你把你的根目录( / )作为你的文档根目录。 由于这种情况,你不能预先说明是否包含尾部的斜线。

在任何情况下,它都包含DocumentRoot指令的值,不管是否已经写入到httpd配置文件中,都可以使用或不使用尾部的斜杠。 PHP只接管来自apache的值。 要获得真正的文档根目录,使用实际realpath和/或在配置文件中或在PHP代码中有条件地添加一个斜杠(或删除它)。

我倾向于使用当前目录比我使用docroot更多,因为它也适用于命令行和单元测试。 我倾向于使用像这样的东西:

require_once(dirname(__FILE__).'/../../../../constants.PHP');

而不是:

require_once($_SERVER['DOCUMENT_ROOT'].'/../constants.PHP');

我在wordpress源码中首先看到它,并且非常喜欢它,但它可能会导致很多“../”重复。

PS FILE是当前文件,dirname将从最后剥离/something.PHP,因此保留包含当前文件的目录的路径。

你可以这样做,以确保尾随的斜线总是存在的

'/'。trim($ _SERVER ['DOCUMENT_ROOT'],'/')。'/'

require_once( '/'.trim( $_SERVER['DOCUMENT_ROOT'],'/' ).'/'.'constants.PHP' );

我认为这取决于服务器配置,如果web根目录是使用或不使用尾部斜杠来定义的。 只要检查这是在每个系统平等。

另请参阅apache文档的serverRoot-Directive 。

Hakre的答案是正确的。 我试图在不同情况下,在控制台脚本或Web服务器上使用include。 我最好的选择是使用绝对路径,从DOCUMENT_ROOT开始。 但是我还是因为那尾随的斜线而卡住了。 这似乎是一个很好的解决方案:

include_once getenv (“DOCUMENT_ROOT”)。“ / WEB-INF / classes

然后用批处理脚本的PHP test.PHP调用你的脚本,并把一个值赋给DOCUMENT_ROOT env变量或者不要,结尾是否为斜杠。 从apache加载时,getenv已经被填充了。

PHP引擎可以用././来管理,和./一样。 htdocs./被解释为htdocs /(在windows下)

老问题,我知道,但因为它给了我一个想法如何解决这个我自己我只是在这里添加我的解决方案。 我想用$ _SERVER ['DOCUMENT_ROOT']定义一个常量(ROOTPATH),并确保它有一个尾部的斜杠(DIRECTORY_SEParaTOR)。

define('ROOTPATH',(ctype_alnum(substr($_SERVER['DOCUMENT_ROOT'],-1)) ? $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEParaTOR : $_SERVER['DOCUMENT_ROOT']));

这假设文件名称的最后一个字符是字母数字(我不记得看到以特殊字符结尾的许多文件名称)。 如果你想确保没有斜线,你可以这样做:

define('ROOTPATH',(!ctype_alnum(substr($_SERVER['DOCUMENT_ROOT'],-1)) ? substr($_SERVER['DOCUMENT_ROOT'],-1) : $_SERVER['DOCUMENT_ROOT']));

和平,莫

相关文章

可以认为OpenFeign是Feign的增强版,不同的是OpenFeign支持S...
为进一步规范小程序交易生态、提升用户购物体验、满足用户在...
云原生之使用Docker部署Dashdot服务器仪表盘
本文主要描述TensorFlow之回归模型的基本原理
1.漏洞描述Apache Druid 是一个集时间序列数据库、数据仓库和...
内部类(当作类中的一个普通成员变量,只不过此成员变量是cl...