如果在服务器上启用或禁用了exec()
,有没有办法检查php脚本?
答案 0 :(得分:51)
这将检查函数是否实际有效(权限,权限等):
if(exec('echo EXEC') == 'EXEC'){
echo 'exec works';
}
答案 1 :(得分:36)
if(function_exists('exec')) {
echo "exec is enabled";
}
答案 2 :(得分:6)
<强> ini_get(&#39; disable_functions选项&#39)强>
您真正想要做的是使用ini_get('disable_functions')
来确定您是否可以使用它:
<?php
function exec_enabled() {
$disabled = explode(',', ini_get('disable_functions'));
return !in_array('exec', $disabled);
}
?>
在这里回答stackoverflow:Check if "exec" is disabled,它实际上似乎来自PHP Man页面:http://php.net/manual/en/function.exec.php#97187
<强>路径强>
如果上面的内容返回true(你可以使用exec()),但PHP仍然无法触发脚本,那么你很可能会遇到该脚本的路径问题,通过这样做来测试:
print exec('which bash');
然后尝试
print exec('which ogr2ogr');
答案 3 :(得分:3)
这将在尝试运行之前检查exec是否可用并已启用。如果运行exec()并且该函数不存在或被禁用,则会生成警告。取决于可能呈现给浏览器的服务器设置,并且几乎总是将一行写入日志文件=性能命中。
// Exec function exists.
// Exec is not disabled.
// Safe Mode is not on.
$exec_enabled =
function_exists('exec') &&
!in_array('exec', array_map('trim', explode(', ', ini_get('disable_functions')))) &&
strtolower(ini_get('safe_mode')) != 1
;
if($exec_enabled) { exec('blah'); }
答案 4 :(得分:3)
除非检查所有可能性
,否则找到Scoped
函数有点棘手
1。exec
2.扫描function_exist('exec')
3.检查启用ini_get('disabled_functions)
safe_mode
除非function is_shell_exec_available() {
if (in_array(strtolower(ini_get('safe_mode')), array('on', '1'), true) || (!function_exists('exec'))) {
return false;
}
$disabled_functions = explode(',', ini_get('disable_functions'));
$exec_enabled = !in_array('exec', $disabled_functions);
return ($exec_enabled) ? true : false;
}
功能未被禁用,否则此函数不会抛出警告。
答案 5 :(得分:1)
示例:
if(strpos(ini_get('disable_functions'),'ini_set')===false)
@ini_set('display_errors',0);
答案 6 :(得分:0)
这是我用来检测函数是否启用的一些丑陋代码。
function is_enabled($f)
{
if($f=='ini_get')return@ini_get('a')===false;
return(($l=@ini_get('disable_functions'))===null||!is_callable($f)||!function_exists($f)||!in_array($f,array_map('trim',explode(',',$l)));
}
//Usage example:
print_r(is_enabled('str_split'));//true or null if ini_get() is disabled
答案 7 :(得分:0)
我假设你在Linux服务器上运行它。
您可以通过运行以下php脚本来测试exec函数:
exec("whoami", $ret);
echo $ret[0];
这将返回命令whoami。
如果它出错,那是因为exec函数无法运行。
答案 8 :(得分:0)
(基于其他回复) 要检查 exec 是否存在并且服务正在运行:
df1 <- read.table("lob_lobbying.txt", sep="|", fill = TRUE, stringsAsFactors = FALSE)