Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从命令行在.php文件中运行shell命令_Php_Shell - Fatal编程技术网

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

从命令行在.php文件中运行shell命令,php,shell,Php,Shell,我有一系列的shell命令,我想放进一个程序中,并从命令行执行程序。我决定使用PHP实现这一点,因此目前我正在尝试运行最基本的shell命令 另存为build.php <?php shell_exec('cd ..'); echo "php executed\n"; ?> 输出 php executed Php执行正确,但我仍然在同一个目录中。如何让shell_exec(…)成功调用shell命令?您需要更改PHP中的cwd(当前工作目录)。。。通过exec()执行的任何cd命令

我有一系列的shell命令,我想放进一个程序中,并从命令行执行程序。我决定使用PHP实现这一点,因此目前我正在尝试运行最基本的shell命令

另存为build.php

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

php executed

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

您需要更改PHP中的
cwd
(当前工作目录)。。。通过
exec()
执行的任何
cd
命令及其姊妹函数将只影响exec()调用的shell以及在shell中执行的任何操作

<?php
    $olddir = getcwd();
    chdir('/path/to/new/dir');  //change to new dir
    exec('somecommand');
somecommand
将在您启动PHP脚本的任何目录中执行-您在一行之前执行的
cd
将不再存在,本质上是一个空操作

请注意,如果您执行了以下操作:

<?php
    exec('cd /path/to/new/dir ; somecommand');

您需要更改PHP中的
cwd
(当前工作目录)。。。通过
exec()
执行的任何
cd
命令及其姊妹函数将只影响exec()调用的shell以及在shell中执行的任何操作

<?php
    $olddir = getcwd();
    chdir('/path/to/new/dir');  //change to new dir
    exec('somecommand');
somecommand
将在您启动PHP脚本的任何目录中执行-您在一行之前执行的
cd
将不再存在,本质上是一个空操作

请注意,如果您执行了以下操作:

<?php
    exec('cd /path/to/new/dir ; somecommand');

您对
cd..
有什么期望?脚本运行自己的shell。我不相信有什么方法可以让脚本更改您的shell。@Alimaudianpour我希望转到父目录您可以这样做:
shell_exec('ls../)仅获取上一个目录列表。不能更改目录使用更改PHP脚本的工作目录。默认工作目录为“”,即运行脚本的当前工作目录。您可以使用获取当前工作目录。最后,PHP脚本无法更改调用shell的目录。您对
cd..
有什么期望?脚本运行自己的shell。我不相信有什么方法可以让脚本更改您的shell。@Alimaudianpour我希望转到父目录您可以这样做:
shell_exec('ls../)仅获取上一个目录列表。不能更改目录使用更改PHP脚本的工作目录。默认工作目录为“”,即运行脚本的当前工作目录。您可以使用获取当前工作目录。最后,PHP脚本无法更改调用shell的目录。