我想在程序中放入一系列shell命令,并从命令行执行程序。我决定使用PHP,所以目前我正在尝试运行最基本的shell命令。
另存为build.php
<?php
shell_exec('cd ..');
echo "php executed\n";
?>
从命令行
php build.php
输出
php executed
Php正确执行但我仍然在同一目录中。如何让shell_exec(...)成功调用shell命令?
答案 0 :(得分:5)
您需要更改PHP中的cwd
(当前工作目录)...通过cd
执行的任何exec()
命令,其姐妹函数将影响 ONLY exec()调用的shell,以及你在shell中执行的任何操作。
<?php
$olddir = getcwd();
chdir('/path/to/new/dir'); //change to new dir
exec('somecommand');
将在somecommand
中执行/path/to/new/dir
。如果你这样做
<?php
exec('cd /path/to/new/dir');
exec('somecommand');
somecommand
将在您启动PHP脚本的任何目录中执行 - 您之前执行过的cd
将不再存在,并且本质上是一个空操作。
请注意,如果你做了类似的事情:
<?php
exec('cd /path/to/new/dir ; somecommand');
然后您的命令将在该目录中执行...但是,一旦该shell退出,目录更改将不再存在。