我需要使用一个函数来通过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的输出。
答案 0 :(得分:1)
Tor需要对运行用户的主目录的写入权限。运行PHP脚本的用户通常不会这样做。
尝试echo $输出;上面提到的方法。你可能会看到这一行:
[warn] Failed to parse/validate config: Couldn't access/create private data directory "/var/www/.tor"
还要确保系统上Tor的路径确实是 / usr / bin / tor ,而不是 / usr / sbin / tor
答案 1 :(得分:0)
您是否以root身份运行php命令?因为TOR可能需要具有root权限才能运行。 shell_exec返回什么输出?
另一件事是我建议使用php和ssh,这样你就可以在保持功能的同时在另一台服务器上安装脚本。
本教程可以很好地帮助您:http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/
答案 2 :(得分:0)
听起来像是一个权限问题,
chmod 777 /usr/bin/tor
但如果这对公众开放,这可能不是一个很好的解决方案。