嘿,我正在尝试使用PHP来执行一个shell命令,该命令将远程运行在我的机器上运行一个服务器。以下是我的PHP代码:
if ($key == "test") { echo "<font color='green'>Key is valid. Server satrted.</font>";
$start = system('cd /root/st/; ls;');
}问题是,ls命令从与web服务器相同的目录中运行,它返回/var/www/html中的所有文件,而不是/root/st/。我也尝试过chdir命令,但都没有用。有人知道如何更改目录,以便可以从指定的目录运行命令吗?谢谢。
发布于 2011-03-12 03:34:04
运行PHP的用户(例如,调用CLI脚本的用户)是否有权限读取该目录?如果您要进入/root/,但不是root用户,则需要将cd添加到当前用户的sudoers中,或者选择另一个目录。
编辑:请注意,将cd添加到sudoers中除了本地的、仅供您使用的脚本之外,根本不适合任何其他内容。:)
发布于 2011-03-12 03:36:36
我有两种方法来解决这个问题。
1:使用正确的unix命令,看看它们是否有效。即:
if ($key == "test") { echo "<font color='green'>Key is valid. Server satrted.</font>";
$start = system('ls /root/st/');
}2:让它在系统上运行一个脚本,该脚本可以超出can服务器的chroot。
if ($key == "test") { echo "<font color='green'>Key is valid. Server satrted.</font>";
$start = system('server.sh');
}而server.sh是
#!/bin/bash
cd /root/st
ls发布于 2011-03-12 03:32:19
PHP有一个chdir()函数。不确定它是否适用于exec/系统调用,但值得一试。
https://stackoverflow.com/questions/5277432
复制相似问题