php execution shell命令仅在重度使用模式下提供随机输出

时间:2012-03-28 18:11:23

标签: php linux unix fedora

请帮我解决我在生产服务器上遇到的这个问题。我启动了一个应用程序,只有在检查它尚不存在之后才能将图像保存在目录中。

要检查它是否已存在,我使用以下命令 find $filePath -name $fileInitial*

我很惊讶地看到它在开发和质量保证方面都很顺利,但在实际环境中,在50个案例中,在5个案例中,即使文件存在,它也会返回空白。

我尝试使用execshell_execpassthrusystem替换反引号操作符。我甚至尝试用find替换ls命令,但仍然没有收获。

请建议可以做些什么?

3 个答案:

答案 0 :(得分:2)

根据您的代码,我强烈建议尽可能避免使用exec / shell_exec。

如果不考虑安全性,则会对整个系统造成非常大的安全风险。

不确定为什么你遇到了正在尝试处理的实际命令的问题,但我的建议是在php中使用file_exists()glob()函数而不是手动转到文件系统

答案 1 :(得分:1)

谢谢大家。你的建议确实奏效了。这一切都适用于glob()。

可能是因为通过php执行shell命令不等待结果的足够时间或者它与运行php的CGI模式有关。

请分享您的想法。

答案 2 :(得分:0)

您是否设置了:ignore_user_abort(true);set_time_limit()合理的东西? 也可以尝试使用popen()。我总觉得它更容易正确接口。