2010-08-27 52 views
0

我可以访问共享的Web主机。 在那里安装的网站使用exec()。大约4个月前,该功能已启用,但现在他们已将其放在disable_functions列表中。他们把exec,passthrushell_exec放在那个列表中,但是他们忘了把system :)这让我觉得服务器管理员并不是很清楚他在做什么。无论如何,他们现在说,这些功能应该永远不会启用,他们不会重新启用它们。cgi-bin问题

安装的网站使用exec()启动一些PHP脚本,将做一些后台工作。现在我正在查看是否有任何其他“合法”方式在后台启动这些php脚本(我预计system()可以工作,但也许他们会在将来也禁用它)。 现在我的简单问题: 在perdefined文件结构中,我看到一个cgi-bin文件夹。它的用途是什么?从我在网上阅读的内容来看,它被用来在通过浏览器访问时生成“动态”页面,但服务器已经安装了PHP,所以我没有看到它的用途。

+0

你可以使用perl的系统调用'system(“command”);'非常类似于php,除非他们禁用cgi/perl – Prix 2010-08-27 20:12:25

回答

1

/cgi-bin/是应放置CGI script的目录。
您可以使用CGI解决PHP中对exec的限制。

创建一个与内容命名somefile.sh文件:

#!/bin/sh 
printf "Content-Type: text/plain\n\n" 
#your code here 

这只会工作,如果/ bin/sh的实际存在,并且是可执行文件(如果你在chroot是不是没有如/ bin/sh的)

有足够的方法来执行命令。如果他们禁用CGI,则可以继续使用SSI

+0

现在我得到一个“内部服务器错误”。 我做了sh.sh,将权限修改为任何人都可以执行的内容 '#!/ bin/bash echo“dsfsdfsdf”' 通过http://site.com/cgi-bin/sh.sh访问它 – Quamis 2010-08-27 19:56:03

+0

我忘了CGI脚本需要发送Content-Type标头。查看更新的帖子。 – Lekensteyn 2010-08-27 20:09:25

+0

thx,它工作:) – Quamis 2010-08-27 20:24:09