php popen不能登录root,sudo命令下也无法加在so库,求php获得root权限方法!
<?php
$system_command = 'su --login root --command "/usr/soft/msc_test/xebug/msc_test /home/wwwroot/weixin/images/voicefile/df0f72a63aa4a8f50852c2801553bde8.wav /home/wwwroot/weixin/images/voicefile/df0f72a63aa4a8f50852c2801553bde8.txt"';
$rootpassw = '******';
$system_console = popen($system_command, "w");
if (is_resource($system_console)) {
fputs($system_console, $rootpassw);
pclose($system_console);
}
?>
上面是通过root权限进行音频识别的一段代码,参照网上很多朋友的代码写了一下,发现这段代码根本没法执行,如果直接用system执行则返回127,根据网上很多童鞋的说法,127是由于命令不存在或者权限不足,但我已经试过755、775、777各种权限都无效,然后已经把执行文件chown www:www 过了,www就是nginx的用户。
如果是命令不存在,那么在控制台为何就能正常执行?为什么?老天要这么整我?
难道popen()方法无法和控制台交互?
因为我可能还会用到该方法执行其他命令,可有高人解决过此类问题?
其实之前因为获得root权限有考虑过用sudo执行,执行的程序是C编写的,需要加在.so库,已经在/etc/bashrc中配置了环境变量:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/soft/msc_test/bin/
同样,这种情况下,在控制台的方式下,任何用户都可以通过命令执行,但是,一旦加上sudo就提示:
error while loading shared libraries: libmsc.so: cannot open shared object file: No such file or directory
命令是:
sudo /usr/soft/msc_test/xebug/msc_test /home/wwwroot/weixin/images/voicefile/df0f72a63aa4a8f50852c2801553bde8.wav /home/wwwroot/weixin/images/voicefile/df0f72a63aa4a8f50852c2801553bde8.txt
两种方法最终都宣告失败,确切说是3种都失败,包括system这货,向各位高手求救了!几种方法能够搞定一种即可!跪谢!