引言
最近需要用php调用本地Linux命令,来实现一些功能。
在网上搜了一下发现,PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), shell_exec()
我在Windows上很愉快的用php执行各种命令,结果放到我的Linux服务器上,就什么反应都没有,连错误提示也没有。
<?php
system("ls");
?>
于是在网上各种搜索,大部分人都在说用户权限问题,结果照着搞了半天还是没有解决这个问题:unamused:
主要思路
在 php.ini 这个配置文件中,有个属性叫disable_functions,这个后面就是被禁止的函数,而刚刚那几个函数都被禁止了。所以找到 php.ini 然后把想使用的函数从黑名单中删除就OK了。
具体步骤
找到 php.ini
如果你知道它在哪里,那么跳过这一步。
执行 phpinfo() 函数就会显示 php 的配置信息,在这里就可以找到php.ini 的位置。
<?php
phpinfo("");
?>
编辑 php.ini
打开 php.ini 找到 disable_functions,把想使用的函数从这个名单里删除即可。
重启PHP
保存 php.ini,但是这时候配置文件并没有生效,重启PHP就行了。
现在就可以在php里愉快的调用Linux命令了。