我遇到了我写的某个PHP脚本(CLI模式)的问题。使用FFMPEG转换视频应该采取某些参数。当我从命令提示符调用它时,它工作正常。但是,我必须从Web服务器调用它。
处理请求的PHP脚本通过我在SE上找到的代码在后台调用PHP脚本:
if (substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $cmd, "r"));
}
else {
exec("nohup " . $cmd . " > /dev/null &");
}
但是,以这种方式运行时,PHP脚本不会创建文件,即使在比通过命令提示符花费的时间长得多的情况下也是如此。
脚本运行,我已经通过让虚拟条目插入数据库来检查它。它还具有创建文件的权限,我通过创建文件来验证文件。
阻止我的脚本正常工作的不同之处是什么?我在Windows 7上使用XAMPP开发并测试了这段代码。
//编辑:我忘了给你这个背景PHP脚本的链接:http://pastebin.com/pfTZMfwi
// EDIT2:我发现PHP进程运行的时间很短(直到下次刷新Windows任务管理器)。可能是PHP在退出时会杀死它们吗?
// EDIT3:不,这似乎不是问题。当脚本从Web服务器调用为后台时,我无法通过exec()执行程序。问题是什么,什么是解决方案/解决方法?
// EDIT4:似乎导致麻烦的命令不是exec()/ etc。但我在exec()之前做的echo命令。我要删除它,但为什么会导致问题?