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

时间:2016-09-23 22:59:07

标签: php ffmpeg exec mod-security

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

    $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"]

但即使我unistalll mod_security也不会自动运行。

但是我不会转换视频,直到我从浏览器访问videocron.php!

1 个答案:

答案 0 :(得分:0)

感谢您提供的大量帮助,并通过Patience& amp;听我的问题。 我通过安装mysqli来解决它。

@lombok.Data
public class BusinessObjectCollection<T> implements Collection<T>, Serializable{
    protected List<T> elements;
    protected Integer totalCount;
    public BusinessObjectCollection() {
        this.elements = new ArrayList<>();
        this.totalCount = 0;
    }

    @Override
    public boolean addAll(Collection<? extends T> c) {
        return elements.addAll(c);
    }

    @Override
    public boolean removeAll(Collection<?> c) {
        return elements.removeAll(c);
    }

    [...]
}

并重启appache