0
가능한 중복 :
PHP background process in safe modePHP는 간부() 또는 동일한 기능
내 프로젝트가 공유 호스트 등 안전 모드에서 실행이 활성화됩니다. exec() 기능을 사용하고 싶었지만 불가능했습니다. 이 경우 어떻게해야합니까?
안전 모드에서 작동하는 동일한 기능 또는 솔루션이 있습니까?
가능한 중복 :
PHP background process in safe modePHP는 간부() 또는 동일한 기능
내 프로젝트가 공유 호스트 등 안전 모드에서 실행이 활성화됩니다. exec() 기능을 사용하고 싶었지만 불가능했습니다. 이 경우 어떻게해야합니까?
안전 모드에서 작동하는 동일한 기능 또는 솔루션이 있습니까?
이 함수는 내가 알고있는 모든 가능성을 결합합니다. 시도 해봐. 나는 그것이 도움이되기를 바랍니다.
<?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>";
?>
호스트를 이동하십시오. 정말 최고의 옵션입니다. 많은 공유 호스트가 exec()를 허용하고 결코 안전 모드가 –
이었습니다. 해결책이 아니라 문제가 바뀌고 있습니다. – Aliweb
대부분의 좋은 호스트에는 이러한 제한이 없습니다. 물론 솔루션 일 것입니다. 수백만의 호스트가 있으며 모든 프로젝트가 특정 프로젝트에 적합하지는 않습니다. 그들이이 한계를 '코드'를 통해 주위에 어떤 식 으로든 부과한다면 어쩌면 강력한 해결책이 아니기 때문에 조건 위반 일 수 있습니다. –