我想将一系列 shell 命令放入程序中并从命令行执行该程序。我决定使用 PHP 来实现此目的,因此目前我正在尝试运行最基本的 shell 命令。
另存为 build.php
<?php
shell_exec('cd ..');
echo "php executed\n";
?>
从命令行
php build.php
Output
php executed
Php 正确执行,但我仍然在同一目录中。如何让 shell_exec( ... ) 成功调用 shell 命令?
您需要更改cwd
(当前工作目录)在 PHP 中...任何cd
您通过执行的命令exec()
和它的姐妹函数会影响ONLYexec() 调用调用的 shell,以及您在 shell 中执行的任何操作。
<?php
$olddir = getcwd();
chdir('/path/to/new/dir'); //change to new dir
exec('somecommand');
将执行somecommand
in /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 退出,目录更改将不再存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)