当我在浏览器中访问目标 php 时,exec() 只是 运行

exec() just run when i access target php in browser

我使用此代码 运行 另一个 php 进行一些工作(ffmpeg 转换)

    $binpath = get_option('binpath','/usr/bin/php');
    $command = $binpath." -cli -f ".ABSPATH."/videocron.php";
    exec( "$command > /dev/null &", $arrOutput );

但是当我上传视频并且 运行 此代码永远不会转换视频。

但是当我从浏览器访问 videocron.php 时,我上传的所有视频突然转换!!!

我使用替代执行函数(system(); exec(); passthru(); shell_exec();) 我通过可读函数检查videocron.php,它是可读的。

即使我将所有者 videocron.php 更改为无人用户

在 mod_security 日志中我得到这个错误:

[Tue Sep 20 23:01:11 2016] [error] [client 37.156.10.171] ModSecurity: Multipart parsing error (init): Multipart: Boundary not found in C-T. [hostname "codenevis.net"] [uri "/lib/upload-ffmpeg.php"] [unique_id "V@GAb38AAAEAAGrk2QoAAAAH"]

但即使我卸载 mod_security 它也不会自动运行。

但在我从浏览器访问 videocron.php 之前不要转换视频!

感谢您的大力帮助和耐心倾听我的问题。 我通过安装 mysqli 来解决它。

yum install php-pdo php-mysqli

并重启应用程序