获取正在运行的脚本的父目录

Tat*_*nen 64 php directory

在PHP中,获取当前运行脚本的目录相对于www根目录的最简洁方法是什么?假设我有:

$_SERVER['SCRIPT_NAME'] == '/relative/path/to/script/index.php'
Run Code Online (Sandbox Code Playgroud)

要不就:

$something_else == '/relative/path/to/script/'
Run Code Online (Sandbox Code Playgroud)

而且我需要/relative/path/to/正确插入斜线.你会建议什么?一个衬垫是优选的.

编辑

我需要得到一个相对于www根的路径,dirname(__FILE__)给我一个文件系统中的绝对路径,这样就行不通了.$_SERVER['SCRIPT_NAME']另一方面,www开始'开始'.

Mik*_*e B 128

如果您的脚本位于,/var/www/dir/index.php则以下内容将返回:

dirname(__FILE__); // /var/www/dir
Run Code Online (Sandbox Code Playgroud)

要么

dirname( dirname(__FILE__) ); // /var/www
Run Code Online (Sandbox Code Playgroud)

编辑

这是一种在许多框架中用于确定app_root的相对路径的技术.

文件结构:

 /var/
      www/
          index.php
          subdir/
                 library.php

index.php是我的调度程序/ boostrap文件,所有请求都被路由到:

define(ROOT_PATH, dirname(__FILE__) ); // /var/www
Run Code Online (Sandbox Code Playgroud)

library.php是一个位于额外目录下的文件,我需要确定相对于应用程序根目录的路径(/ var/www /).

$path_current = dirname( __FILE__ ); // /var/www/subdir
$path_relative = str_replace(ROOT_PATH, '', $path_current); // /subdir
Run Code Online (Sandbox Code Playgroud)

可能有更好的方法来计算相对路径,str_replace()但你明白了.

  • 从 PHP 7.0.0 开始,可以使用 `dirname(__FILE__, 2)` 代替 `dirname(dirname(__FILE__))`。[`dirname` 变更日志](https://www.php.net/manual/en/function.dirname.php#refsect1-function.dirname-changelog) (2认同)

Cha*_*ard 13

从PHP 5.3.0开始,您可以将其__DIR__用于此目的.

该文件的目录.如果在include中使用,则返回包含文件的目录.这相当于dirname(__ FILE__).

请参阅PHP Magic常量.

C:\www>php --version
PHP 5.5.6 (cli) (built: Nov 12 2013 11:33:44)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies

C:\www>php -r "echo __DIR__;"
C:\www
Run Code Online (Sandbox Code Playgroud)


Mar*_*aio 8

如果我正确理解了您的问题,请假设您正在运行的脚本

/relative/path/to/script/index.php
Run Code Online (Sandbox Code Playgroud)

这将为您提供相对于文档www的运行脚本的父目录:

$parent_dir = dirname(dirname($_SERVER['SCRIPT_NAME'])) . '/';
//$parent_dir will be '/relative/path/to/'
Run Code Online (Sandbox Code Playgroud)

如果您希望正在运行的脚本的父目录相对于服务器根目录:

$parent_dir = dirname(dirname($_SERVER['SCRIPT_FILENAME'])) . '/';
//$parent_dir will be '/root/some/path/relative/path/to/'
Run Code Online (Sandbox Code Playgroud)


han*_*ans 8

获取当前脚本的parentdir.

$parent_dir = dirname(__DIR__);
Run Code Online (Sandbox Code Playgroud)


Vig*_* KM 7

我希望这能帮到您。

echo getcwd().'<br>'; // getcwd() will return current working directory
echo dirname(getcwd(),1).'<br>';
echo dirname(getcwd(),2).'<br>';
echo dirname(getcwd(),3).'<br>';
Run Code Online (Sandbox Code Playgroud)

输出 :

C:\wamp64\www\public_html\step
C:\wamp64\www\public_html
C:\wamp64\www
C:\wamp64
Run Code Online (Sandbox Code Playgroud)


小智 5

很难过,但这样做会:

substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'],basename($_SERVER['SCRIPT_NAME'])))
Run Code Online (Sandbox Code Playgroud)