0

我需要使用一个函数通过 Web 界面启动和停止 Tor。由于某种原因,以下指令不起作用(没有产生 Tor 进程):

if ($_GET['tor'] == 'start') {
    shell_exec('/usr/bin/tor > /dev/null 2>&1 &');
...

但是当我通过 shell 运行完全相同的字符串时它可以工作:

$ php -r "shell_exec('killall tor > /dev/null 2>&1 &');"

如何解决问题?

提前致谢。ķ


该问题与 /var/tor 目录权限有关。由于它是由没有任何 home/.tor 的 apache 用户生成的,因此他尝试创建 var/tor。我只能在使用 python (os.system("tor")) 启动 tor 时获得 tor 的输出。

4

3 回答 3

1

Tor 需要对运行 Tor 的用户的主目录有写权限。运行 PHP 脚本的用户通常不是这种情况。

试试 echo $output; 上面提到的方法。你可能会看到这一行:

[warn] Failed to parse/validate config: Couldn't access/create private data directory "/var/www/.tor"

还要确保 Tor 的路径在您的系统上确实是/usr/bin/tor而不是/usr/sbin/tor

于 2012-05-04T17:17:29.340 回答
0

您是否以 root 身份运行 php 命令?因为 TOR 可能需要具有 root 权限才能运行。shell_exec 返回什么输出?

另一件事是我建议使用 php 和 ssh,这将允许您在另一台服务器上安装脚本,同时保持功能。

本教程应该可以很好地帮助您:http: //kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/

于 2012-05-04T16:42:10.320 回答
0

好像是权限问题

chmod 777 /usr/bin/tor

但如果这对公众开放,这可能不是一个很好的解决方案。

于 2012-05-04T16:43:22.847 回答