我知道这是一个简单的问题,但我一辈子都做不到。如果我通过SSH(linux)登录到我的服务器并键入:/home/username/public_html/x/foo.cgi f=subscribe l=list e=abcd@gmail.com
,脚本就会完美运行。然而,如果我尝试通过PHP运行脚本,比如:shell_exec("/home/username/public_html/x/foo.cgi f=subscribe l=list e=abcd@gmail.com");
,则不会发生任何事情。
有人能给我指正确的方向吗?
提前感谢!
Tre
"Nothing happens"不是一个非常描述性的错误消息。然而,脑海中浮现出三种可能性:
- 服务器托管环境与shell环境之间的差异
- 您的服务器或托管站点可能已禁用shell_exec或其他功能
- 您可能需要以SSH登录的同一用户身份运行PHP(或者获得正确的权限)
- 由于配置错误或误用,堆栈的其他部分处于混乱状态
任你选择。检查日志。确保没有留下任何漏洞供攻击者进入。
如果您正在管理服务器,很可能是权限问题。您的Web服务器以www数据或类似用户身份运行。它需要对脚本文件具有执行权限才能运行。请尝试使用chmod命令更改脚本的所有者,或者使用chown命令赋予要运行的文件更自由的访问权限。
另一件需要考虑的事情是,如果PHP在安全模式下运行,shell_exec可能会被禁用。