我在某个目录中有一个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
中未提及答案 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 4
到PHP 5
以上所有观点都可以解释您遇到的行为。