PHP,exec的问题...如何确保执行正常?

时间:2011-03-29 09:05:55

标签: php cgi

我正在上传视频,该视频应生成三个屏幕截图缩略图。我在管理员和前端都运行相同的上传代码,但由于一些奇怪的原因,拇指仅在我从前端上传时生成,而不是从后端上传...

我的目录结构 root/convert.php(这是通过exec调用运行的文件) (以下两个文件分别是在用户端和管理端运行的上传文件)

root/upload.php
root/siteadmin/modules/videos/edit.php

我认为convert.php由于某种原因没有从管理员端运行。该命令类似于:

$cmd = $cgi . $config['phppath']. ' ' .$config['BASE_DIR']. '/convert.php ' .$vdoname. ' ' .$vid. ' ' .$ff;echo $cmd;die;
                        exec($cmd. '>/dev/null &');

并且回应了exec $cmd,我明白了:

/usr/bin/php /home/testsite/public_html/dev/convert.php 1272.mp4 1272 /home/testsite/public_html/dev/video/1272.mp4

如何确保运行convert.php?

编辑:好的,现在我确定它没有从管理员端执行,任何想法为什么?

3 个答案:

答案 0 :(得分:3)

http://php.net/manual/en/function.exec.php

" return_var" - 如果return_var参数与输出参数一起出现,则执行命令的返回状态将写入此变量。

另一种确定exec是否实际运行convert.php文件的方法,在convert.php中添加一些调试信息(例如,当covert.php脚本启动时将某些内容写入文件)。

答案 1 :(得分:0)

只是一个想法

成功运行后,您可以在转换脚本中打印“TRUE”。 不要添加>/dev/null & 检查exec的返回值

$value = exec($cmd);
if($value == 'TRUE')
  // did run sucessfully 
}

答案 2 :(得分:0)

chmod 755 convet.php

您还要确保convert.php的第一行是:

#!/usr/bin/php

检查php cli可执行文件的完整路径。

还要确保convert.php las unix line ending(“\ n”)