gpt4 book ai didi

PHP passthru() 返回 "sh: 1: svn: not found "错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:56:27 24 4
gpt4 key购买 nike

我们的大学在 Linux 服务器上提供免费托管,我在其中将一个 SVN 项目 check out 到我的本地学生目录中。远程登录服务器时,我可以毫无问题地向服务器上的 SVN 项目沙箱添加/提交/等。

我在生成 passthru 的同一台服务器上有一个 PHP 脚本调用以在该沙箱上执行简单的 SVN 版本号命令:

<?php
echo passthru(' 2>&1 cd /nav/to/svnSandbox && 2>&1 svn --version ');
?>

上面的 exec() 调用在服务器端失败并输出

“sh: 1: svn: 未找到”到 client边。这意味着没有安装 SVN?但是,它实际上安装在服务器上,而且我在登录时可以正常使用 SVN。

以下 PHP 代码可以正常工作:

<?php
echo passthru('pwd');
?>

PHP 脚本和 SVN 沙箱目录的用户权限为 755(我也尝试过许多其他变体)。我也读过this链接,等等。

是否未授予 PHP 脚本对服务器端 SVN 命令的特定访问权限?

为什么我不能从我的脚本中成功调用 SVN exec()?有没有比我上面的代码更简单的方法?

服务器管理员通常对使用 exec() 的脚本有某种我不知道的保护措施吗?

最佳答案

This implies that SVN isn't installed?

不,它只是意味着在您的路径中找不到 svn

可能是因为它没有安装,或者可能是您的路径没有为您使用的方法正确设置。

比较输出:

<?php
echo passthru('echo $PATH');
?>

并在登录到该框时执行 echo $PATH

您可能会在后者而非前者上找到 svn 目录。

然后就是弄清楚如何为 passthru 方法设置路径。

可能就像这样简单:

<?php
echo passthru('( cd /nav/to/svnSandbox; PATH=$PATH:/svnpath; svn --version ) 2>&1');
?>

或:

<?php
echo passthru('( cd /nav/to/svnSandbox; /svnpath/svn --version ) 2>&1');
?>

关于PHP passthru() 返回 "sh: 1: svn: not found "错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28597418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com