在PHP中创建绝对路径的最佳方法?(参见本手册中列出的3种方法)

在PHP中创建绝对路径的最佳方法?(参见本手册中列出的3种方法),php,path,Php,Path,我可以毫无问题地创建路径,但我想知道这3种方法中哪一种最可靠,最适合大多数服务器 现在我在脚本中使用方法1,一些用户出现路径问题。我只希望该方法能够在任何版本的php和几乎任何服务器配置上工作 1. <?php echo $_SERVER['DOCUMENT_ROOT']; ?> 2. <?php echo getcwd(); ?> 3. <?php echo dirname(__FILE__); ?> 1。 2. 3. 非常感谢您为此提供的任何

我可以毫无问题地创建路径,但我想知道这3种方法中哪一种最可靠,最适合大多数服务器

现在我在脚本中使用方法1,一些用户出现路径问题。我只希望该方法能够在任何版本的php和几乎任何服务器配置上工作

1.  <?php echo $_SERVER['DOCUMENT_ROOT']; ?>

2.  <?php echo getcwd(); ?>

3.  <?php echo dirname(__FILE__); ?>
1。
2.
3.
非常感谢您为此提供的任何专业知识

dirname(\uuuuu文件)
将始终工作,无论平台或Web服务器如何。DOCUMENT_ROOT在服务器配置之间的工作方式可能不同(Apache vs IIS vs Lighttpd vs nginex)。cwd显示选定的工作目录,该目录可能正确,也可能不正确(您可以在脚本中更改它)。所以我建议
dirname(\uuuu文件)

  • $\服务器阵列保存用户数据,因此不受信任,它依赖于平台(Web服务器)

  • 当前工作目录可能取决于请求的入口点。考虑这个例子(CLI):

  • IMHO最安全的解决方案是使用
    dirname(\uuuuu FILE\uuuuu)
    \uuuuuu DIR\uuuuuu
    (自PHP5.3以来),因为文件路径始终相同(相对于项目结构)


它们都会工作,但它们可能会产生不同的结果,因为它们做的事情不同。你想实现什么?他们有什么“路径问题”吗?基本上,我试图指向一个位于固定位置的文件,我希望URL无论从何处调用都有效。例如:“/home/sitecom/public_html/myfile.php”,所以我想使用方法1获得文件的根路径,类似于:“/home/sitecom/public_html”,大多数情况下似乎都能做到这一点,但对于一些用户来说,它没有按预期工作。路径问题只是它没有工作。当我查看代码时,它根本不生成路径,它只是空白,只显示文件名,如果您使用共享托管服务,选项1将不起作用。好的,看来大家一致认为dirname(文件)是第二种方法。非常感谢你的帮助!说$\u服务器都是用户生成的是不正确的。很多信息来自服务器端,而不是客户端(例如,“DOCUMENT\u ROOT”值可以信任)。对于DOCUMENT\u ROOT条目(当然还有其他条目),您的观点是正确的。但是$\u服务器阵列中仍然有一些变量可以被客户端/用户欺骗。在应用程序的上下文中,数据是外来的,不应盲目信任。+1我添加到新项目的第一件事是
define('ROOT',realpath(dirname(_文件))。/'
cd ~/mypath/mypath2
php myscript.php
cd ~/mypath
php mypath/myscript.php