2014-10-09 250 views
0

我有一个编码视频的Python脚本,然后调用一个将新视频上传到保存箱的shell脚本。它从命令行工作正常,但我需要使其他人可以执行它,所以我有一个PHP脚本调用python脚本。运行一个PHP脚本,运行一个运行bash脚本的Python脚本,挂在bash上

我不希望PHP脚本永远运行(它需要15-30分钟才能完成),我只是想让它启动python脚本并完成。我想出了我需要做的事情,就像我说过的,它可以在命令行上运行。但是,当它通过PHP调用时,视频会进行编码,但文件永远不会上传。我可以看到dropbox脚本被启动并被列为一个使用一定百分比的CPU的进程,该百分比从未改变,似乎卡住/死亡。

命令看起来是这样的,正在运行使用CMD()

script.py -options &>/logs/phptopython.log &

的shell脚本拉开帷幕使用POPEN

有什么建议?

谢谢

+0

也许看到:http://php.net/manual/en/function.ignore-user-abort.php – Mike 2014-10-09 18:59:15

+2

Sup dawg,我听说你喜欢脚本。 – BrenBarn 2014-10-09 19:03:51

+0

LOL @BrenBarn。您的评论让我想起了https://github.com/ircmaxell/PHPPHP – Mike 2014-10-09 19:05:08

回答

0

听起来这可能是一个权限问题。仔细检查您尝试上传视频的目录的权限。如果你是在Linux上,你可以修改权限上像这样的目录:

chmod 755 /path/to/dir 

这给所有者的读文件,写和执行权限(7)。该组和其他用户获得读取和执行权限(5)。

Apache可能以不同的用户身份运行,而不是自己在bash中运行命令。一个快速测试,看看它是否是一个权限问题将是在该目录上授予777。我不会这么说 - 它只是一种快速确定权限是否是问题的方法。

如果脚本以777权限运行,您可以将目录的所有者更改为Apache运行时的用户,或者将Apache用户添加到目录的组中并授予组写入权限。

编辑: 我刚刚注意到你说你使用cmd(),所以我猜你是在Windows上。我的评论可能仍然是相关的,但chmod命令不适用于Windows。

+0

我在Linux上,我输错了,exec()是使用的PHP命令,而不是cmd()。这不是权限问题,目录已经是777.另外www-data正在调用Python脚本,它调用ffmpeg将文件编码到同一个目录(所以如果它可以在那里写入文件,你会认为它可以访问它也是ulpoad)。 – Ryzone 2014-10-09 19:36:07

+0

好棒。您也可以尝试检查Apache错误日志。也许它有一个错误,可以指向正确的方向。 Apache错误日志通常位于/var/log/apache/error.log。 – 2014-10-09 19:39:59

+0

错误日志中没有任何内容。 FWIW也不会写入命令中的日志文件。 '&>/logs/phptopython.log&'当我通过cmd行运行它时,我确实得到了输出。并且在webmin>进程中,两个命令在几个小时前仍然存在,相同的CPU%。 – Ryzone 2014-10-09 19:48:33