【发布时间】:2015-02-19 01:52:55
【问题描述】:
我们的大学在 Linux 服务器上免费托管,我在其中将一个 SVN 项目签入到我的本地学生目录中。在远程登录服务器时,我在服务器上的 SVN 项目沙箱中添加/提交/等没有问题。
我在同一台服务器上有一个 PHP 脚本,它发出 passthru 调用以在该沙箱上执行一个简单的 SVN 版本号命令:
<?php
echo passthru(' 2>&1 cd /nav/to/svnSandbox && 2>&1 svn --version ');
?>
上面的 exec() 调用在服务器端失败并输出
"sh: 1: svn: not found" 到client 一侧。这意味着没有安装SVN?不过它其实是安装在服务器上的,而且我在登录的时候也能正常使用SVN。
以下 PHP 代码可以正常工作:
<?php
echo passthru('pwd');
?>
PHP 脚本和 SVN 沙箱目录的用户权限为 755(我也尝试了许多其他变体)。我还阅读了this 链接等。
PHP 脚本是否未授予对服务器端 SVN 命令的某些访问权限?
为什么我不能从我的脚本中成功调用 SVN exec() ?有没有比我上面的代码更简单的方法?
服务器管理员通常对使用 exec() 的脚本有某种我不知道的保护措施吗?
【问题讨论】: