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 に答える