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