我想知道如何测试服务器上是否允许system()或exec().我一直收到此错误"警告:出于安全原因,exec()已被禁用..."
我知道safe_mode函数在我的提供程序运行的php版本中被折旧(5.3.3)所以我不能使用get_ini('safe_mode')检查.
还有什么可做的?
我用它作为备份脚本.如果提供者允许系统,则脚本会生成一个tar文件,并在用户登录时将其邮寄给我.
提前致谢.
irc*_*ell 10
嗯,只有两种方法可以被禁用: safe_mode或disable_functions.
所以你可以做一个检查:
function isAvailable($func) {
if (ini_get('safe_mode')) return false;
$disabled = ini_get('disable_functions');
if ($disabled) {
$disabled = explode(',', $disabled);
$disabled = array_map('trim', $disabled);
return !in_array($func, $disabled);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
哦,并且function_exists应该返回true,因为它是一个核心函数(否则你可能会伪造核心函数并对主机造成一些真正的破坏)......因此is_callable也应该返回true(因为函数确实存在).因此,唯一的方法是检查ini设置,或实际调用它...
编辑:另外需要注意的是,有几种方法可以执行shell命令.查看: