![有没有办法让 bash 脚本的输出在浏览器中可见?](https://linux22.com/image/586715/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E8%AE%A9%20bash%20%E8%84%9A%E6%9C%AC%E7%9A%84%E8%BE%93%E5%87%BA%E5%9C%A8%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E5%8F%AF%E8%A7%81%EF%BC%9F.png)
我为程序员编写了一个 svn update 脚本。该脚本在 bash 中运行良好。程序员希望从浏览器(通过他们的管理员站点)执行它。
脚本非常简单(其唯一示例不完全相同)
#!/bin/bash
echo "Start update..."
cd /dir/with/site
/usr/bin/svn update
echo "Update ended."
在浏览器中,bash 脚本通过 php 文件启动,如下所示:
echo system('/updatesvnscript.sh');
在 bash 中执行后,我可以看到来自 echos 和 svn 应用程序的所有输出,脚本在 bash 中运行良好。
通过 php 在浏览器中启动脚本时,我只得到 echos 的输出,例如Start update... Update ended.
,但没有 svn 的输出。问题是,当我通过浏览器进行更新时,脚本也不会更新我的网站,所以我需要找出问题所在。
所以我想在浏览器中查看 svn 的输出,以查看通过浏览器使用 svn 是否有某些功能无法正常工作。
Bash 脚本具有通过浏览器执行的适当权限,并且具有修改(更新)站点目录中文件的适当权限。
答案1
切换到你的 web 服务器/php 运行的用户 ID,然后手动运行,
cd /dir/with/site
/usr/bin/svn update
看看你得到了什么。
或者,改变
/usr/bin/svn update
到
/usr/bin/svn update 2>&1
它会将错误消息重定向到标准输出,然后该标准输出将显示在您的网页上以帮助进行诊断。
答案2
Subversion 使用 stderr 向用户显示输出,因此我认为这可以修复它:
echo system('/updatesvnscript.sh 2>&1');