我正在努力制作一个网络应用程序,它将为我管理我的变化莫测的存储库。我想要它,这样当我告诉它加载存储库X时:
问题是,我想:获取hgweb脚本,修改它,并运行它。但是我不想:获取hgweb脚本,修改它,将它写入一个文件并重定向到那里。我使用Apache运行httpd进程。
发布于 2009-07-26 23:52:09
发布了正确的答案(我投了反对票)。回勾操作符是执行shell脚本的方式。
最简单的解决方案可能是修改hgweb脚本,使其本身不包含到存储库的路径。相反,将其作为命令行参数传递。这意味着您不必担心在任何地方修改和编写hgweb脚本。你要做的就是:
//do stuff to get location of repository from MySQL into variable $x
//run shell script
$res = `python hgweb.py $x`;发布于 2009-07-26 23:39:31
您可以在PHP中运行shell脚本。这样做有多种方法,而且由于一些主机没有提供适当的权限而变得复杂,所有这些都在php.net上得到了详细的记录。这就是说,最简单的方法就是简单地把你的命令放在后面。因此,要解压缩文件,我可以说:
`unzip /path/to/file`因此,如果您的python脚本能够在命令行环境中运行(或者您可以修改它以运行),这似乎是首选的方法。
发布于 2009-07-26 23:45:22
就您的问题而言,如果不编写修改后的脚本,就不太可能获得php来执行修改后的脚本,无论是磁盘上的文件,映射为ram的虚拟文件,还是类似的东西。
听起来你可能是想用树枝敲打铁路钉。如果您正在基于存储在MySQL中的用户权限对访问进行过滤,那么您是否查看了现有的HG解决方案,以确保没有比hgweb更适用的东西?它确实是为做好一件事而建的,这是一件超出正常范围的事情。
我可能建议将apache的本机身份验证作为一种更方便的方法来控制对存储库的访问,然后只需在不修改脚本的情况下提供回购服务。
https://stackoverflow.com/questions/1185867
复制相似问题