使用PHP编写一个程序时遇到一个问题,就是我的程序需要使用shell_exec函数来更好地完成一个功能,但是由于安全的原因,shell_exec函数默认是被禁止的。为了让程序与使用者更加友好地交互,在程序运行的时候最好可以检测这个函数是否可用。如果不可用得发出提示。

方法

经过查询,使用下面方法可以在PHP程序中判断方法是否可用

is_callable('shell_exec') && false === stripos(ini_get('disable_functions'), 'shell_exec');

如果shell_exec可以调用,则上面表达式返回true,否则返回false

这么一看不只是shell_exec,像passthruexecsystemchrootchgrpchown等这些默认也被禁用的函数都可以用这个方法检测。

解释

  • is_callable:验证变量的内容是否可以作为函数调用
  • stripos:查找字符串中首次出现的不区分大小写的子字符串的位置
  • ini_get:获取一个配置选项的值

REFERENCE