【问题标题】:How I know if the script works from within a subdirectory or not?我如何知道脚本是否在子目录中工作?
【发布时间】:2016-06-27 00:56:16
【问题描述】:

在某些情况下,我们中的一些人更喜欢将脚本插入到子目录中,例如:http://example.com/Script/index.php,而另一些人更喜欢将脚本插入到根目录中,例如:http://example.com/index.php

如何知道脚本是否在子目录中?

【问题讨论】:

  • 通过查看 url 或文件路径?不太确定你在问什么。也许你想要__DIR__
  • @Dagon:我想以编程方式了解用户是在子目录中添加脚本文件还是直接添加到根目录。关于__DIR__不适合这个工作

标签: php subdirectory


【解决方案1】:

嗯,应该很简单。请记住,如果 __FILE__ 是符号链接,则需要进行一些调整。

$root = $_SERVER['DOCUMENT_ROOT'];

/**
 * @var bool TRUE if current script is in DOCUMENT ROOT, FALSE otherwise.
 */
$inRoot = __FILE__ == $root . DIRECTORY_SEPARATOR . basename(__FILE__);

#OR 
$inRoot = dirname($_SERVER['SCRIPT_FILENAME']) == $_SERVER['DOCUMENT_ROOT'];

【讨论】:

  • 谢谢,但不幸的是在这两种情况下我得到了相同的结果 -> false.
  • 它对我有用。很确定你做错了什么。你见过$_SERVER['DOCUMENT_ROOT'] 的价值吗?你能调试上面脚本的每个部分吗?无论如何,我想你明白了! ;)
  • $_SERVER['DOCUMENT_ROOT'] = C:/Program Files (x86)/wamp/www , __FILE__ = C:\Program Files (x86)\wamp\www\script\system\Router.php.
  • 我想我找到了解决办法:echo (dirname(ltrim($_SERVER['SCRIPT_NAME'], '/')) !== '.')? "The script in subdirectory" : "The script in root";
【解决方案2】:

...或者你可以试试getcwd()。成功返回当前工作目录,失败返回 FALSE。

【讨论】:

  • 谢谢,但是当我使用getcwd()和子目录中的脚本时,结果变为C:\Program Files (x86)\wamp\www\script,而如果在根目录下的脚本,结果变为C:\Program Files (x86)\wamp\www 。正如您在第二个结果中看到的那样,虽然脚本在根目录中,但结果不是 false 预期的那样
猜你喜欢
  • 1970-01-01
  • 2015-04-19
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多