0

可能重复:
安全模式下的 PHP 后台进程

我的项目在共享主机上运行,​​因此启用了安全模式。我想使用exec()函数,但这是不可能的。在这种情况下我该怎么办?
在安全模式下是否有相同的功能或解决方案?

4

1 回答 1

0

这个功能结合了我所知道的所有可能性。试试看。我希望,它有帮助。

<?php
function _exec($cmd) {
    $disablefunc = array();
    $disablefunc = explode(",", str_replace(" ", "", @ini_get("disable_functions")));
    if(is_callable("exec") && !in_array("exec", $disablefunc)) {
        exec($cmd, $result);
        $result = join("\n", $result)."\n";
    } elseif(is_callable("system") && !in_array("system", $disablefunc)) { 
        $src = @ob_get_contents();
        @ob_clean();
        system($cmd);
        $result = @ob_get_contents();
        @ob_clean();
        echo $src;
    } elseif(is_callable("passthru") && !in_array("passthru", $disablefunc)) {
        $src = @ob_get_contents();
        @ob_clean();
        passthru($cmd);
        $result = @ob_get_contents();
        @ob_clean();
        echo $src;
    } elseif(is_callable("popen") && !in_array("popen", $disablefunc) && is_resource($h = popen($cmd, "r"))) {
        $result = "";
        if(is_callable("fread") && !in_array("fread", $disablefunc)) {
            while(!feof($h)) {
                $result .= fread($h, 1024);
            }
        } else {
            while(!feof($h)) {
                $result .= fgets($h, 1024);
            }
        }
        pclose($h);
    } else {
        trigger_error("Cannot execute the command due to server restrictions.", E_USER_WARNING);
        return false;
    }
    return $result;
}

echo "<pre>"._exec("ls")."</pre>";
?>
于 2012-09-20T20:47:52.917 回答