如何获取调用PHP脚本的目录

时间:2015-04-27 20:15:39

标签: php command-line

我在某个目录中有一个PHP脚本。当我从命令行调用它时,getcwd(),__DIR__和exec(" pwd")返回脚本本身的目录,而不是pwd。

E.g。从/ tmp调用/some/place/test.php:

echo(getcwd());        // prints /some/place

echo(exec("pwd"));     // prints /some/place

echo(__DIR__);         // prints /some/place

echo($_SERVER["PWD"]); // prints /tmp

$ _ SERVER [" PWD"]具有我需要的价值,但在文档http://php.net/manual/en/reserved.variables.server.php

中未提及

2 个答案:

答案 0 :(得分:0)

差点击中"发布问题"并猜测检查命令行参数。 : - )

$ php -h
...
  -C               Do not chdir to the script's directory
...

答案 1 :(得分:0)

对我来说,解决方案是使用getcwd() 我从我的测试中得到的结果与你的不同。

关于$ _SERVER ['PWD']:
正如他们在Undefined index 'PWD' in $_server中解释的那样,使用它是危险的 如你所说,它没有出现在文档中,也不能保证它按预期工作。

关于getcwd():
这是我做过的测试。请注意testGetCwd.php仅包含echo getcwd();

// working dir: /home/me
// phpfile dir: /var/www/phpfiles

cd /home/me
php /var/www/phpfiles/testGetCwd.php
// echo /home/me

注意:
- 使用chdir时要小心,因为要更改current working directory.
- 似乎从PHP 4PHP 5

的功能发生了变化

以上所有观点都可以解释您遇到的行为。