从命令行在.php文件中运行shell命令

时间:2014-02-19 19:57:03

标签: php shell

我想在程序中放入一系列shell命令,并从命令行执行程序。我决定使用PHP,所以目前我正在尝试运行最基本的shell命令。

另存为build.php

<?php
shell_exec('cd ..');
echo "php executed\n";
?>

从命令行

php build.php

输出

php executed

Php正确执行但我仍然在同一目录中。如何让shell_exec(...)成功调用shell命令?

1 个答案:

答案 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退出,目录更改将不再存在。