首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP文件执行

PHP文件执行
EN

Stack Overflow用户
提问于 2011-03-12 03:30:44
回答 5查看 188关注 0票数 1

嘿,我正在尝试使用PHP来执行一个shell命令,该命令将远程运行在我的机器上运行一个服务器。以下是我的PHP代码:

代码语言:javascript
复制
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命令,但都没有用。有人知道如何更改目录,以便可以从指定的目录运行命令吗?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-12 03:34:04

运行PHP的用户(例如,调用CLI脚本的用户)是否有权限读取该目录?如果您要进入/root/,但不是root用户,则需要将cd添加到当前用户的sudoers中,或者选择另一个目录。

编辑:请注意,将cd添加到sudoers中除了本地的、仅供您使用的脚本之外,根本不适合任何其他内容。:)

票数 2
EN

Stack Overflow用户

发布于 2011-03-12 03:36:36

我有两种方法来解决这个问题。

1:使用正确的unix命令,看看它们是否有效。即:

代码语言:javascript
复制
if ($key == "test") { echo "<font color='green'>Key is valid. Server satrted.</font>";
    $start = system('ls /root/st/');
}

2:让它在系统上运行一个脚本,该脚本可以超出can服务器的chroot。

代码语言:javascript
复制
if ($key == "test") { echo "<font color='green'>Key is valid. Server satrted.</font>";
    $start = system('server.sh');
}

而server.sh是

代码语言:javascript
复制
#!/bin/bash
cd /root/st
ls
票数 1
EN

Stack Overflow用户

发布于 2011-03-12 03:32:19

PHP有一个chdir()函数。不确定它是否适用于exec/系统调用,但值得一试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5277432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档